]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h
MdeModulePkg/UefiBootManagerLib: Enhance short-form expanding logic
[mirror_edk2.git] / MdeModulePkg / Library / UefiBootManagerLib / InternalBm.h
index 8d7215ab04c85eba973f2be59a66a07b3657de71..ef09050a1a708319b48d476bdb003d802c12556f 100644 (file)
@@ -309,23 +309,6 @@ BmSetVariableAndReportStatusCodeOnError (
   IN VOID       *Data\r
   );\r
 \r
-/**\r
-  Return whether the PE header of the load option is valid or not.\r
-\r
-  @param[in] Type       The load option type.\r
-  @param[in] FileBuffer The PE file buffer of the load option.\r
-  @param[in] FileSize   The size of the load option file.\r
-\r
-  @retval TRUE  The PE header of the load option is valid.\r
-  @retval FALSE The PE header of the load option is not valid.\r
-**/\r
-BOOLEAN\r
-BmIsLoadOptionPeHeaderValid (\r
-  IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE Type,\r
-  IN VOID                              *FileBuffer,\r
-  IN UINTN                             FileSize\r
-  );\r
-\r
 /**\r
   Function compares a device path data structure to that of all the nodes of a\r
   second device path instance.\r
@@ -425,16 +408,83 @@ BmMakeBootOptionDescriptionUnique (
 \r
   @param LoadFileHandle The specified Load File instance.\r
   @param FilePath       The file path which will pass to LoadFile().\r
-  @param FullPath       Return the full device path pointing to the load option.\r
-  @param FileSize       Return the size of the load option.\r
 \r
-  @return  The load option buffer or NULL if fails.\r
+  @return  The full device path pointing to the load option buffer.\r
+**/\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+BmExpandLoadFile (\r
+  IN  EFI_HANDLE                      LoadFileHandle,\r
+  IN  EFI_DEVICE_PATH_PROTOCOL        *FilePath\r
+  );\r
+\r
+/**\r
+  Return the RAM Disk device path created by LoadFile.\r
+\r
+  @param FilePath  The source file path.\r
+\r
+  @return Callee-to-free RAM Disk device path\r
+**/\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+BmGetRamDiskDevicePath (\r
+  IN EFI_DEVICE_PATH_PROTOCOL *FilePath\r
+  );\r
+\r
+/**\r
+  Destroy the RAM Disk.\r
+\r
+  The destroy operation includes to call RamDisk.Unregister to\r
+  unregister the RAM DISK from RAM DISK driver, free the memory\r
+  allocated for the RAM Disk.\r
+\r
+  @param RamDiskDevicePath    RAM Disk device path.\r
+**/\r
+VOID\r
+BmDestroyRamDisk (\r
+  IN EFI_DEVICE_PATH_PROTOCOL *RamDiskDevicePath\r
+  );\r
+\r
+/**\r
+  Get the next possible full path pointing to the load option.\r
+\r
+  @param FilePath  The device path pointing to a load option.\r
+                   It could be a short-form device path.\r
+  @param FullPath  The full path returned by the routine in last call.\r
+                   Set to NULL in first call.\r
+\r
+  @return The next possible full path pointing to the load option.\r
+          Caller is responsible to free the memory.\r
+**/\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+BmGetNextLoadOptionDevicePath (\r
+  IN  EFI_DEVICE_PATH_PROTOCOL          *FilePath,\r
+  IN  EFI_DEVICE_PATH_PROTOCOL          *FullPath\r
+  );\r
+\r
+/**\r
+  Return the next matched load option buffer.\r
+  The routine keeps calling BmGetNextLoadOptionDevicePath() until a valid\r
+  load option is read.\r
+\r
+  @param Type      The load option type.\r
+                   It's used to check whether the load option is valid.\r
+                   When it's LoadOptionTypeMax, the routine only guarantees\r
+                   the load option is a valid PE image but doesn't guarantee\r
+                   the PE's subsystem type is valid.\r
+  @param FilePath  The device path pointing to a load option.\r
+                   It could be a short-form device path.\r
+  @param FullPath  Return the next full device path of the load option after\r
+                   short-form device path expanding.\r
+                   Caller is responsible to free it.\r
+                   NULL to return the first matched full device path.\r
+  @param FileSize  Return the load option size.\r
+\r
+  @return The load option buffer. Caller is responsible to free the memory.\r
 **/\r
 VOID *\r
-BmGetFileBufferFromLoadFile (\r
-  EFI_HANDLE                          LoadFileHandle,\r
-  IN  EFI_DEVICE_PATH_PROTOCOL        *FilePath,\r
-  OUT EFI_DEVICE_PATH_PROTOCOL        **FullPath,\r
-  OUT UINTN                           *FileSize\r
+BmGetNextLoadOptionBuffer (\r
+  IN  EFI_BOOT_MANAGER_LOAD_OPTION_TYPE Type,\r
+  IN  EFI_DEVICE_PATH_PROTOCOL          *FilePath,\r
+  OUT EFI_DEVICE_PATH_PROTOCOL          **FullPath,\r
+  OUT UINTN                             *FileSize\r
   );\r
 #endif // _INTERNAL_BM_H_\r