From 889a4bc2a95a743d4e2ee5eed44875fa11702aae Mon Sep 17 00:00:00 2001 From: niruiyu Date: Tue, 5 Jul 2011 07:55:45 +0000 Subject: [PATCH] Fix the BDS to show UEFI hard drive boot option as "EFI Hard Drive" instead of "EFI DVD/CDROM" Signed-off-by: niruiyu Reviewed-by: li-elvin git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11974 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Library/GenericBdsLib/BdsBoot.c | 35 ++++++++++++------ .../GenericBdsLib/GenericBdsStrings.uni | Bin 3528 -> 3852 bytes 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c b/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c index 774f092944..1ac2946360 100644 --- a/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c +++ b/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c @@ -1435,6 +1435,7 @@ BdsLibEnumerateAllBootOption ( { EFI_STATUS Status; UINT16 FloppyNumber; + UINT16 HarddriveNumber; UINT16 CdromNumber; UINT16 UsbNumber; UINT16 MiscNumber; @@ -1467,13 +1468,14 @@ BdsLibEnumerateAllBootOption ( EFI_IMAGE_OPTIONAL_HEADER_UNION HdrData; EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION Hdr; - FloppyNumber = 0; - CdromNumber = 0; - UsbNumber = 0; - MiscNumber = 0; - ScsiNumber = 0; - PlatLang = NULL; - LastLang = NULL; + FloppyNumber = 0; + HarddriveNumber = 0; + CdromNumber = 0; + UsbNumber = 0; + MiscNumber = 0; + ScsiNumber = 0; + PlatLang = NULL; + LastLang = NULL; ZeroMem (Buffer, sizeof (Buffer)); // @@ -1562,18 +1564,27 @@ BdsLibEnumerateAllBootOption ( break; // - // Assume a removable SATA device should be the DVD/CD device + // Assume a removable SATA device should be the DVD/CD device, a fixed SATA device should be the Hard Drive device. // case BDS_EFI_MESSAGE_ATAPI_BOOT: case BDS_EFI_MESSAGE_SATA_BOOT: - if (CdromNumber != 0) { - UnicodeSPrint (Buffer, sizeof (Buffer), L"%s %d", BdsLibGetStringById (STRING_TOKEN (STR_DESCRIPTION_CD_DVD)), CdromNumber); + if (BlkIo->Media->RemovableMedia) { + if (CdromNumber != 0) { + UnicodeSPrint (Buffer, sizeof (Buffer), L"%s %d", BdsLibGetStringById (STRING_TOKEN (STR_DESCRIPTION_CD_DVD)), CdromNumber); + } else { + UnicodeSPrint (Buffer, sizeof (Buffer), L"%s", BdsLibGetStringById (STRING_TOKEN (STR_DESCRIPTION_CD_DVD))); + } + CdromNumber++; } else { - UnicodeSPrint (Buffer, sizeof (Buffer), L"%s", BdsLibGetStringById (STRING_TOKEN (STR_DESCRIPTION_CD_DVD))); + if (HarddriveNumber != 0) { + UnicodeSPrint (Buffer, sizeof (Buffer), L"%s %d", BdsLibGetStringById (STRING_TOKEN (STR_DESCRIPTION_HARDDRIVE)), HarddriveNumber); + } else { + UnicodeSPrint (Buffer, sizeof (Buffer), L"%s", BdsLibGetStringById (STRING_TOKEN (STR_DESCRIPTION_HARDDRIVE))); + } + HarddriveNumber++; } DEBUG ((DEBUG_INFO | DEBUG_LOAD, "Buffer: %S\n", Buffer)); BdsLibBuildOptionFromHandle (BlockIoHandles[Index], BdsBootOptionList, Buffer); - CdromNumber++; break; case BDS_EFI_MESSAGE_USB_DEVICE_BOOT: diff --git a/IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsStrings.uni b/IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsStrings.uni index f84f30c7eec1a641de1e82a3a4ee807f4afe5952..7c3b4f96900c0d36ad9c272b5a6372afb1a3a788 100644 GIT binary patch delta 95 zcmX>h-6J>Q6t4n^579Icq delta 15 XcmeB?J0U&c)W#b>*fz6qvataGI}ipv -- 2.39.2