MdeModulePkg/UefiBootManagerLib: Expose *GetLoadOptionBuffer() API
Expose EfiBootManagerGetLoadOptionBuffer() API. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Provide Boot Manager related library APIs.
|
Provide Boot Manager related library APIs.
|
||||||
|
|
||||||
Copyright (c) 2011 - 2015, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||||
(C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP<BR>
|
(C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -431,6 +431,27 @@ EfiBootManagerGetBootManagerMenu (
|
|||||||
EFI_BOOT_MANAGER_LOAD_OPTION *BootOption
|
EFI_BOOT_MANAGER_LOAD_OPTION *BootOption
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get the load option by its device path.
|
||||||
|
|
||||||
|
@param FilePath The device path pointing to a load option.
|
||||||
|
It could be a short-form device path.
|
||||||
|
@param FullPath Return the full device path of the load option after
|
||||||
|
short-form device path expanding.
|
||||||
|
Caller is responsible to free it.
|
||||||
|
@param FileSize Return the load option size.
|
||||||
|
|
||||||
|
@return The load option buffer. Caller is responsible to free the memory.
|
||||||
|
**/
|
||||||
|
VOID *
|
||||||
|
EFIAPI
|
||||||
|
EfiBootManagerGetLoadOptionBuffer (
|
||||||
|
IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
|
||||||
|
OUT EFI_DEVICE_PATH_PROTOCOL **FullPath,
|
||||||
|
OUT UINTN *FileSize
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
The function enumerates all the legacy boot options, creates them and
|
The function enumerates all the legacy boot options, creates them and
|
||||||
registers them in the BootOrder variable.
|
registers them in the BootOrder variable.
|
||||||
|
@ -586,7 +586,7 @@ BmExpandUsbDevicePath (
|
|||||||
|
|
||||||
for (Index = 0; (Index < HandleCount) && (FileBuffer == NULL); Index++) {
|
for (Index = 0; (Index < HandleCount) && (FileBuffer == NULL); Index++) {
|
||||||
FullDevicePath = AppendDevicePath (DevicePathFromHandle (Handles[Index]), RemainingDevicePath);
|
FullDevicePath = AppendDevicePath (DevicePathFromHandle (Handles[Index]), RemainingDevicePath);
|
||||||
FileBuffer = BmGetLoadOptionBuffer (FullDevicePath, FullPath, FileSize);
|
FileBuffer = EfiBootManagerGetLoadOptionBuffer (FullDevicePath, FullPath, FileSize);
|
||||||
FreePool (FullDevicePath);
|
FreePool (FullDevicePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -851,7 +851,7 @@ BmExpandPartitionDevicePath (
|
|||||||
Status = EfiBootManagerConnectDevicePath (Instance, NULL);
|
Status = EfiBootManagerConnectDevicePath (Instance, NULL);
|
||||||
if (!EFI_ERROR (Status)) {
|
if (!EFI_ERROR (Status)) {
|
||||||
TempDevicePath = AppendDevicePath (Instance, NextDevicePathNode (FilePath));
|
TempDevicePath = AppendDevicePath (Instance, NextDevicePathNode (FilePath));
|
||||||
FileBuffer = BmGetLoadOptionBuffer (TempDevicePath, FullPath, FileSize);
|
FileBuffer = EfiBootManagerGetLoadOptionBuffer (TempDevicePath, FullPath, FileSize);
|
||||||
FreePool (TempDevicePath);
|
FreePool (TempDevicePath);
|
||||||
|
|
||||||
if (FileBuffer != NULL) {
|
if (FileBuffer != NULL) {
|
||||||
@ -911,7 +911,7 @@ BmExpandPartitionDevicePath (
|
|||||||
// Find the matched partition device path
|
// Find the matched partition device path
|
||||||
//
|
//
|
||||||
TempDevicePath = AppendDevicePath (BlockIoDevicePath, NextDevicePathNode (FilePath));
|
TempDevicePath = AppendDevicePath (BlockIoDevicePath, NextDevicePathNode (FilePath));
|
||||||
FileBuffer = BmGetLoadOptionBuffer (TempDevicePath, FullPath, FileSize);
|
FileBuffer = EfiBootManagerGetLoadOptionBuffer (TempDevicePath, FullPath, FileSize);
|
||||||
FreePool (TempDevicePath);
|
FreePool (TempDevicePath);
|
||||||
|
|
||||||
if (FileBuffer != NULL) {
|
if (FileBuffer != NULL) {
|
||||||
@ -1425,7 +1425,8 @@ BmGetFileBufferFromLoadFiles (
|
|||||||
@return The load option buffer. Caller is responsible to free the memory.
|
@return The load option buffer. Caller is responsible to free the memory.
|
||||||
**/
|
**/
|
||||||
VOID *
|
VOID *
|
||||||
BmGetLoadOptionBuffer (
|
EFIAPI
|
||||||
|
EfiBootManagerGetLoadOptionBuffer (
|
||||||
IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
|
IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
|
||||||
OUT EFI_DEVICE_PATH_PROTOCOL **FullPath,
|
OUT EFI_DEVICE_PATH_PROTOCOL **FullPath,
|
||||||
OUT UINTN *FileSize
|
OUT UINTN *FileSize
|
||||||
@ -1648,7 +1649,7 @@ EfiBootManagerBoot (
|
|||||||
RamDiskDevicePath = NULL;
|
RamDiskDevicePath = NULL;
|
||||||
if (DevicePathType (BootOption->FilePath) != BBS_DEVICE_PATH) {
|
if (DevicePathType (BootOption->FilePath) != BBS_DEVICE_PATH) {
|
||||||
Status = EFI_NOT_FOUND;
|
Status = EFI_NOT_FOUND;
|
||||||
FileBuffer = BmGetLoadOptionBuffer (BootOption->FilePath, &FilePath, &FileSize);
|
FileBuffer = EfiBootManagerGetLoadOptionBuffer (BootOption->FilePath, &FilePath, &FileSize);
|
||||||
if (FileBuffer != NULL) {
|
if (FileBuffer != NULL) {
|
||||||
RamDiskDevicePath = BmGetRamDiskDevicePath (FilePath);
|
RamDiskDevicePath = BmGetRamDiskDevicePath (FilePath);
|
||||||
}
|
}
|
||||||
|
@ -1281,7 +1281,7 @@ EfiBootManagerProcessLoadOption (
|
|||||||
mBmLoadOptionName[LoadOption->OptionType], LoadOption->OptionNumber
|
mBmLoadOptionName[LoadOption->OptionType], LoadOption->OptionNumber
|
||||||
));
|
));
|
||||||
ImageHandle = NULL;
|
ImageHandle = NULL;
|
||||||
FileBuffer = BmGetLoadOptionBuffer (LoadOption->FilePath, &FilePath, &FileSize);
|
FileBuffer = EfiBootManagerGetLoadOptionBuffer (LoadOption->FilePath, &FilePath, &FileSize);
|
||||||
DEBUG_CODE (
|
DEBUG_CODE (
|
||||||
if (FileBuffer != NULL && CompareMem (LoadOption->FilePath, FilePath, GetDevicePathSize (FilePath)) != 0) {
|
if (FileBuffer != NULL && CompareMem (LoadOption->FilePath, FilePath, GetDevicePathSize (FilePath)) != 0) {
|
||||||
DEBUG ((EFI_D_INFO, "[Bds] DevicePath expand: "));
|
DEBUG ((EFI_D_INFO, "[Bds] DevicePath expand: "));
|
||||||
|
@ -310,25 +310,6 @@ BmSetVariableAndReportStatusCodeOnError (
|
|||||||
IN VOID *Data
|
IN VOID *Data
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
|
||||||
Get the load option by its device path.
|
|
||||||
|
|
||||||
@param FilePath The device path pointing to a load option.
|
|
||||||
It could be a short-form device path.
|
|
||||||
@param FullPath Return the full device path of the load option after
|
|
||||||
short-form device path expanding.
|
|
||||||
Caller is responsible to free it.
|
|
||||||
@param FileSize Return the load option size.
|
|
||||||
|
|
||||||
@return The load option buffer. Caller is responsible to free the memory.
|
|
||||||
**/
|
|
||||||
VOID *
|
|
||||||
BmGetLoadOptionBuffer (
|
|
||||||
IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
|
|
||||||
OUT EFI_DEVICE_PATH_PROTOCOL **FullPath,
|
|
||||||
OUT UINTN *FileSize
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Return whether the PE header of the load option is valid or not.
|
Return whether the PE header of the load option is valid or not.
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user