diff options
author | Liming Gao <liming.gao@intel.com> | 2016-07-25 22:00:23 +0800 |
---|---|---|
committer | Liming Gao <liming.gao@intel.com> | 2016-08-01 12:58:27 +0800 |
commit | fa9f986cfbea5db0e92c313dd4d4a0c781d1498b (patch) | |
tree | 4ad016a63e3462f2c4ca588a1b0b4ca7ac567a87 /MdeModulePkg/Library/UefiBootManagerLib | |
parent | 2f014788940cc23cc300aeead476e02853ee90ec (diff) | |
download | edk2-fa9f986cfbea5db0e92c313dd4d4a0c781d1498b.tar.gz edk2-fa9f986cfbea5db0e92c313dd4d4a0c781d1498b.tar.bz2 edk2-fa9f986cfbea5db0e92c313dd4d4a0c781d1498b.zip |
MdeModulePkg UefiBootManagerLib: Update LoadFile boot description
Update boot description to support LoadFile protocol based on FV file.
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Liming Gao <liming.gao@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Diffstat (limited to 'MdeModulePkg/Library/UefiBootManagerLib')
-rw-r--r-- | MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c b/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c index 066ea80a47..f086764f24 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
};
|