Update boot description to support LoadFile protocol based on FV file.

Cc: Ruiyu Ni <ruiyu...@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Liming Gao <liming....@intel.com>
---
 .../Library/UefiBootManagerLib/BmBootDescription.c | 47 ++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c 
b/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c
index 066ea80..f086764 100644
--- a/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c
+++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c
@@ -455,6 +455,52 @@ BmGetNetworkDescription (
 }
 
 /**
+  Return the boot description for LoadFile
+
+  @param Handle                Controller handle.
+
+  @return  The description string.
+**/
+CHAR16 *
+BmGetLoadFileDescription (
+  IN EFI_HANDLE                  Handle
+  )
+{
+  EFI_STATUS                            Status;
+  EFI_DEVICE_PATH_PROTOCOL              *FilePath;
+  EFI_DEVICE_PATH_PROTOCOL              *DevicePathNode;
+  CHAR16                                *Description;
+  EFI_LOAD_FILE_PROTOCOL                *LoadFile;
+
+  Status = gBS->HandleProtocol (Handle, &gEfiLoadFileProtocolGuid, (VOID 
**)&LoadFile);
+  if (EFI_ERROR (Status)) {
+    return NULL;
+  }
+
+  //
+  // Get the file name
+  //
+  Description = NULL;
+  Status = gBS->HandleProtocol (Handle, &gEfiDevicePathProtocolGuid, (VOID 
**)&FilePath);
+  if (!EFI_ERROR (Status)) {
+    DevicePathNode = FilePath;
+    while (!IsDevicePathEnd (DevicePathNode)) {
+      if (DevicePathNode->Type == MEDIA_DEVICE_PATH && DevicePathNode->SubType 
== MEDIA_FILEPATH_DP) {
+        Description = (CHAR16 *)(DevicePathNode + 1);
+        break;
+      }
+      DevicePathNode = NextDevicePathNode (DevicePathNode);
+    }
+  }
+
+  if (Description != NULL) {
+    return AllocateCopyPool (StrSize (Description), Description);
+  }
+
+  return NULL;
+}
+
+/**
   Return the boot description for the controller based on the type.
 
   @param Handle                Controller handle.
@@ -559,6 +605,7 @@ BM_GET_BOOT_DESCRIPTION mBmBootDescriptionHandlers[] = {
   BmGetUsbDescription,
   BmGetDescriptionFromDiskInfo,
   BmGetNetworkDescription,
+  BmGetLoadFileDescription,
   BmGetMiscDescription
 };
 
-- 
2.8.0.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to