From 10dbbf573b45b70fe7f12e0a1f58318fe6bc8cd2 Mon Sep 17 00:00:00 2001 From: Alex Ionescu Date: Mon, 5 Oct 2015 04:51:32 +0000 Subject: [PATCH] [BOOTLIB]: - 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 | 9 ++++----- reactos/boot/environ/include/bl.h | 19 +++++++++++++++++++ reactos/boot/environ/lib/io/device.c | 8 +++++--- reactos/boot/environ/lib/io/etfs.c | 1 - reactos/boot/environ/lib/io/file.c | 2 +- 5 files changed, 29 insertions(+), 10 deletions(-) diff --git a/reactos/boot/environ/app/bootmgr/bootmgr.c b/reactos/boot/environ/app/bootmgr/bootmgr.c index b4468af6c10..0dbca2abbbe 100644 --- a/reactos/boot/environ/app/bootmgr/bootmgr.c +++ b/reactos/boot/environ/app/bootmgr/bootmgr.c @@ -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"); diff --git a/reactos/boot/environ/include/bl.h b/reactos/boot/environ/include/bl.h index 99c6b552e3b..025ff6da13b 100644 --- a/reactos/boot/environ/include/bl.h +++ b/reactos/boot/environ/include/bl.h @@ -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 diff --git a/reactos/boot/environ/lib/io/device.c b/reactos/boot/environ/lib/io/device.c index fdaf14ec9b0..131861ebeaa 100644 --- a/reactos/boot/environ/lib/io/device.c +++ b/reactos/boot/environ/lib/io/device.c @@ -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 */ diff --git a/reactos/boot/environ/lib/io/etfs.c b/reactos/boot/environ/lib/io/etfs.c index bd8e51b5014..bf0742875bf 100644 --- a/reactos/boot/environ/lib/io/etfs.c +++ b/reactos/boot/environ/lib/io/etfs.c @@ -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; diff --git a/reactos/boot/environ/lib/io/file.c b/reactos/boot/environ/lib/io/file.c index bcc7c07703f..ce0cb722d74 100644 --- a/reactos/boot/environ/lib/io/file.c +++ b/reactos/boot/environ/lib/io/file.c @@ -345,7 +345,7 @@ FileIoOpen ( Unknown, FileTableCompareWithSubsetAttributes, &DirectoryEntry); - if (NT_SUCCESS(Status)) + if (!NT_SUCCESS(Status)) { goto Quickie; }