MdeModulePkg: Add UefiBootManagerLib
UefiBootManagerLib provides: load option library functions; hot key library functions; boot library functions; connect and disconnect library functions; driver health library functions. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17327 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
657
MdeModulePkg/Include/Library/UefiBootManagerLib.h
Normal file
657
MdeModulePkg/Include/Library/UefiBootManagerLib.h
Normal file
@ -0,0 +1,657 @@
|
||||
/** @file
|
||||
Provide Boot Manager related library APIs.
|
||||
|
||||
Copyright (c) 2011 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
|
||||
#ifndef _UEFI_BOOT_MANAGER_LIB_H_
|
||||
#define _UEFI_BOOT_MANAGER_LIB_H_
|
||||
|
||||
#include <Protocol/DriverHealth.h>
|
||||
#include <Library/SortLib.h>
|
||||
|
||||
//
|
||||
// Boot Manager load option library functions.
|
||||
//
|
||||
|
||||
//
|
||||
// Load Option Type
|
||||
//
|
||||
typedef enum {
|
||||
LoadOptionTypeBoot,
|
||||
LoadOptionTypeDriver,
|
||||
LoadOptionTypeMax
|
||||
} EFI_BOOT_MANAGER_LOAD_OPTION_TYPE;
|
||||
|
||||
typedef enum {
|
||||
LoadOptionNumberMax = 0x10000,
|
||||
LoadOptionNumberUnassigned = LoadOptionNumberMax
|
||||
} EFI_BOOT_MANAGER_LOAD_OPTION_NUMBER;
|
||||
|
||||
//
|
||||
// Common structure definition for DriverOption and BootOption
|
||||
//
|
||||
typedef struct {
|
||||
//
|
||||
// Data read from UEFI NV variables
|
||||
//
|
||||
UINTN OptionNumber; // #### numerical value, could be LoadOptionNumberUnassigned
|
||||
EFI_BOOT_MANAGER_LOAD_OPTION_TYPE OptionType; // LoadOptionTypeBoot or LoadOptionTypeDriver
|
||||
UINT32 Attributes; // Load Option Attributes
|
||||
CHAR16 *Description; // Load Option Description
|
||||
EFI_DEVICE_PATH_PROTOCOL *FilePath; // Load Option Device Path
|
||||
UINT8 *OptionalData; // Load Option optional data to pass into image
|
||||
UINT32 OptionalDataSize; // Load Option size of OptionalData
|
||||
|
||||
//
|
||||
// Used at runtime
|
||||
//
|
||||
EFI_STATUS Status; // Status returned from boot attempt gBS->StartImage ()
|
||||
CHAR16 *ExitData; // Exit data returned from gBS->StartImage ()
|
||||
UINTN ExitDataSize; // Size of ExitData
|
||||
} EFI_BOOT_MANAGER_LOAD_OPTION;
|
||||
|
||||
/**
|
||||
Returns an array of load options based on the EFI variable
|
||||
L"BootOrder"/L"DriverOrder" and the L"Boot####"/L"Driver####" variables impled by it.
|
||||
#### is the hex value of the UINT16 in each BootOrder/DriverOrder entry.
|
||||
|
||||
@param LoadOptionCount Returns number of entries in the array.
|
||||
@param LoadOptionType The type of the load option.
|
||||
|
||||
@retval NULL No load options exist.
|
||||
@retval !NULL Array of load option entries.
|
||||
|
||||
**/
|
||||
EFI_BOOT_MANAGER_LOAD_OPTION *
|
||||
EFIAPI
|
||||
EfiBootManagerGetLoadOptions (
|
||||
OUT UINTN *LoadOptionCount,
|
||||
IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE LoadOptionType
|
||||
);
|
||||
|
||||
/**
|
||||
Free an array of load options returned from EfiBootManagerGetLoadOptions().
|
||||
|
||||
@param LoadOptions Pointer to the array of load options to free.
|
||||
@param LoadOptionCount Number of array entries in LoadOptions.
|
||||
|
||||
@return EFI_SUCCESS LoadOptions was freed.
|
||||
@return EFI_INVALID_PARAMETER LoadOptions is NULL.
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EfiBootManagerFreeLoadOptions (
|
||||
IN EFI_BOOT_MANAGER_LOAD_OPTION *LoadOptions,
|
||||
IN UINTN LoadOptionCount
|
||||
);
|
||||
|
||||
/**
|
||||
Initialize a load option.
|
||||
|
||||
@param Option Pointer to the load option to be initialized.
|
||||
@param OptionNumber Option number of the load option.
|
||||
@param OptionType Type of the load option.
|
||||
@param Attributes Attributes of the load option.
|
||||
@param Description Description of the load option.
|
||||
@param FilePath Device path of the load option.
|
||||
@param OptionalData Optional data of the load option.
|
||||
@param OptionalDataSize Size of the optional data of the load option.
|
||||
|
||||
@retval EFI_SUCCESS The load option was initialized successfully.
|
||||
@retval EFI_INVALID_PARAMETER Option, Description or FilePath is NULL.
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EfiBootManagerInitializeLoadOption (
|
||||
IN OUT EFI_BOOT_MANAGER_LOAD_OPTION *Option,
|
||||
IN UINTN OptionNumber,
|
||||
IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE OptionType,
|
||||
IN UINT32 Attributes,
|
||||
IN CHAR16 *Description,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
|
||||
IN UINT8 *OptionalData,
|
||||
IN UINT32 OptionalDataSize
|
||||
);
|
||||
|
||||
/**
|
||||
Free a load option created by EfiBootManagerInitializeLoadOption()
|
||||
or EfiBootManagerVariableToLoadOption().
|
||||
|
||||
@param LoadOption Pointer to the load option to free.
|
||||
CONCERN: Check Boot#### instead of BootOrder, optimize, spec clarify
|
||||
@return EFI_SUCCESS LoadOption was freed.
|
||||
@return EFI_INVALID_PARAMETER LoadOption is NULL.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EfiBootManagerFreeLoadOption (
|
||||
IN EFI_BOOT_MANAGER_LOAD_OPTION *LoadOption
|
||||
);
|
||||
|
||||
/**
|
||||
Initialize the load option from the VariableName.
|
||||
|
||||
@param VariableName EFI Variable name which could be Boot#### or
|
||||
Driver####
|
||||
@param LoadOption Pointer to the load option to be initialized
|
||||
|
||||
@retval EFI_SUCCESS The option was created
|
||||
@retval EFI_INVALID_PARAMETER VariableName or LoadOption is NULL.
|
||||
@retval EFI_NOT_FOUND The variable specified by VariableName cannot be found.
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EfiBootManagerVariableToLoadOption (
|
||||
IN CHAR16 *VariableName,
|
||||
IN OUT EFI_BOOT_MANAGER_LOAD_OPTION *LoadOption
|
||||
);
|
||||
|
||||
/**
|
||||
Create the Boot#### or Driver#### variable from the load option.
|
||||
|
||||
@param LoadOption Pointer to the load option.
|
||||
|
||||
@retval EFI_SUCCESS The variable was created.
|
||||
@retval Others Error status returned by RT->SetVariable.
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EfiBootManagerLoadOptionToVariable (
|
||||
IN CONST EFI_BOOT_MANAGER_LOAD_OPTION *LoadOption
|
||||
);
|
||||
|
||||
/**
|
||||
This function will update the Boot####/Driver#### and the BootOrder/DriverOrder
|
||||
to add a new load option.
|
||||
|
||||
@param Option Pointer to load option to add.
|
||||
@param Position Position of the new load option to put in the BootOrder/DriverOrder.
|
||||
|
||||
@retval EFI_SUCCESS The load option has been successfully added.
|
||||
@retval Others Error status returned by RT->SetVariable.
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EfiBootManagerAddLoadOptionVariable (
|
||||
IN EFI_BOOT_MANAGER_LOAD_OPTION *Option,
|
||||
IN UINTN Position
|
||||
);
|
||||
|
||||
/**
|
||||
Delete the load option according to the OptionNumber and OptionType.
|
||||
|
||||
Only the BootOrder/DriverOrder is updated to remove the reference of the OptionNumber.
|
||||
|
||||
@param OptionNumber Option number of the load option.
|
||||
@param OptionType Type of the load option.
|
||||
|
||||
@retval EFI_NOT_FOUND The load option cannot be found.
|
||||
@retval EFI_SUCCESS The load option was deleted.
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EfiBootManagerDeleteLoadOptionVariable (
|
||||
IN UINTN OptionNumber,
|
||||
IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE OptionType
|
||||
);
|
||||
|
||||
/**
|
||||
Sort the load options. The DriverOrder/BootOrder variables will be re-created to
|
||||
reflect the new order.
|
||||
|
||||
@param OptionType The type of the load option.
|
||||
@param Comparator The comparator function pointer.
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
EfiBootManagerSortLoadOptionVariable (
|
||||
IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE OptionType,
|
||||
IN SORT_COMPARE CompareFunction
|
||||
);
|
||||
|
||||
//
|
||||
// Boot Manager hot key library functions.
|
||||
//
|
||||
|
||||
#pragma pack(1)
|
||||
///
|
||||
/// EFI Key Option.
|
||||
///
|
||||
typedef struct {
|
||||
///
|
||||
/// Specifies options about how the key will be processed.
|
||||
///
|
||||
EFI_BOOT_KEY_DATA KeyData;
|
||||
///
|
||||
/// The CRC-32 which should match the CRC-32 of the entire EFI_LOAD_OPTION to
|
||||
/// which BootOption refers. If the CRC-32s do not match this value, then this key
|
||||
/// option is ignored.
|
||||
///
|
||||
UINT32 BootOptionCrc;
|
||||
///
|
||||
/// The Boot#### option which will be invoked if this key is pressed and the boot option
|
||||
/// is active (LOAD_OPTION_ACTIVE is set).
|
||||
///
|
||||
UINT16 BootOption;
|
||||
///
|
||||
/// The key codes to compare against those returned by the
|
||||
/// EFI_SIMPLE_TEXT_INPUT and EFI_SIMPLE_TEXT_INPUT_EX protocols.
|
||||
/// The number of key codes (0-3) is specified by the EFI_KEY_CODE_COUNT field in KeyOptions.
|
||||
///
|
||||
EFI_INPUT_KEY Keys[3];
|
||||
UINT16 OptionNumber;
|
||||
} EFI_BOOT_MANAGER_KEY_OPTION;
|
||||
#pragma pack()
|
||||
|
||||
/**
|
||||
Start the hot key service so that the key press can trigger the boot option.
|
||||
|
||||
@param HotkeyTriggered Return the waitable event and it will be signaled
|
||||
when a valid hot key is pressed.
|
||||
|
||||
@retval EFI_SUCCESS The hot key service is started.
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EfiBootManagerStartHotkeyService (
|
||||
IN EFI_EVENT *HotkeyTriggered
|
||||
);
|
||||
|
||||
//
|
||||
// Modifier for EfiBootManagerAddKeyOptionVariable and EfiBootManagerDeleteKeyOptionVariable
|
||||
//
|
||||
#define EFI_BOOT_MANAGER_SHIFT_PRESSED 0x00000001
|
||||
#define EFI_BOOT_MANAGER_CONTROL_PRESSED 0x00000002
|
||||
#define EFI_BOOT_MANAGER_ALT_PRESSED 0x00000004
|
||||
#define EFI_BOOT_MANAGER_LOGO_PRESSED 0x00000008
|
||||
#define EFI_BOOT_MANAGER_MENU_KEY_PRESSED 0x00000010
|
||||
#define EFI_BOOT_MANAGER_SYS_REQ_PRESSED 0x00000020
|
||||
|
||||
/**
|
||||
Add the key option.
|
||||
It adds the key option variable and the key option takes affect immediately.
|
||||
|
||||
@param AddedOption Return the added key option.
|
||||
@param BootOptionNumber The boot option number for the key option.
|
||||
@param Modifier Key shift state.
|
||||
@param ... Parameter list of pointer of EFI_INPUT_KEY.
|
||||
|
||||
@retval EFI_SUCCESS The key option is added.
|
||||
@retval EFI_ALREADY_STARTED The hot key is already used by certain key option.
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EfiBootManagerAddKeyOptionVariable (
|
||||
OUT EFI_BOOT_MANAGER_KEY_OPTION *AddedOption, OPTIONAL
|
||||
IN UINT16 BootOptionNumber,
|
||||
IN UINT32 Modifier,
|
||||
...
|
||||
);
|
||||
|
||||
/**
|
||||
Delete the Key Option variable and unregister the hot key
|
||||
|
||||
@param DeletedOption Return the deleted key options.
|
||||
@param Modifier Key shift state.
|
||||
@param ... Parameter list of pointer of EFI_INPUT_KEY.
|
||||
|
||||
@retval EFI_SUCCESS The key option is deleted.
|
||||
@retval EFI_NOT_FOUND The key option cannot be found.
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EfiBootManagerDeleteKeyOptionVariable (
|
||||
IN EFI_BOOT_MANAGER_KEY_OPTION *DeletedOption, OPTIONAL
|
||||
IN UINT32 Modifier,
|
||||
...
|
||||
);
|
||||
|
||||
/**
|
||||
Register the key option to exit the waiting of the Boot Manager timeout.
|
||||
Platform should ensure that the continue key option isn't conflict with
|
||||
other boot key options.
|
||||
|
||||
@param Modifier Key shift state.
|
||||
@param ... Parameter list of pointer of EFI_INPUT_KEY.
|
||||
|
||||
@retval EFI_SUCCESS Successfully register the continue key option.
|
||||
@retval EFI_ALREADY_STARTED The continue key option is already registered.
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EfiBootManagerRegisterContinueKeyOption (
|
||||
IN UINT32 Modifier,
|
||||
...
|
||||
);
|
||||
|
||||
/**
|
||||
Try to boot the boot option triggered by hot key.
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
EfiBootManagerHotkeyBoot (
|
||||
VOID
|
||||
);
|
||||
//
|
||||
// Boot Manager boot library functions.
|
||||
//
|
||||
|
||||
/**
|
||||
The function creates boot options for all possible bootable medias in the following order:
|
||||
1. Removable BlockIo - The boot option only points to the removable media
|
||||
device, like USB key, DVD, Floppy etc.
|
||||
2. Fixed BlockIo - The boot option only points to a Fixed blockIo device,
|
||||
like HardDisk.
|
||||
3. Non-BlockIo SimpleFileSystem - The boot option points to a device supporting
|
||||
SimpleFileSystem Protocol, but not supporting BlockIo
|
||||
protocol.
|
||||
4. LoadFile - The boot option points to the media supporting
|
||||
LoadFile protocol.
|
||||
Reference: UEFI Spec chapter 3.3 Boot Option Variables Default Boot Behavior
|
||||
|
||||
The function won't delete the boot option not added by itself.
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
EfiBootManagerRefreshAllBootOption (
|
||||
VOID
|
||||
);
|
||||
|
||||
/**
|
||||
Attempt to boot the EFI boot option. This routine sets L"BootCurent" and
|
||||
signals the EFI ready to boot event. If the device path for the option starts
|
||||
with a BBS device path a legacy boot is attempted. Short form device paths are
|
||||
also supported via this rountine. A device path starting with
|
||||
MEDIA_HARDDRIVE_DP, MSG_USB_WWID_DP, MSG_USB_CLASS_DP gets expaned out
|
||||
to find the first device that matches. If the BootOption Device Path
|
||||
fails the removable media boot algorithm is attempted (\EFI\BOOTIA32.EFI,
|
||||
\EFI\BOOTX64.EFI,... only one file type is tried per processor type)
|
||||
|
||||
@param BootOption Boot Option to try and boot.
|
||||
On return, BootOption->Status contains the boot status:
|
||||
EFI_SUCCESS BootOption was booted
|
||||
EFI_UNSUPPORTED BootOption isn't supported.
|
||||
EFI_NOT_FOUND The BootOption was not found on the system
|
||||
Others BootOption failed with this error status
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
EfiBootManagerBoot (
|
||||
IN EFI_BOOT_MANAGER_LOAD_OPTION *BootOption
|
||||
);
|
||||
|
||||
/**
|
||||
Return the Boot Manager Menu.
|
||||
|
||||
@param BootOption Return the Boot Manager Menu.
|
||||
|
||||
@retval EFI_SUCCESS The Boot Manager Menu is successfully returned.
|
||||
@retval EFI_NOT_FOUND The Boot Manager Menu is not found.
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EfiBootManagerGetBootManagerMenu (
|
||||
EFI_BOOT_MANAGER_LOAD_OPTION *BootOption
|
||||
);
|
||||
|
||||
/**
|
||||
The function enumerates all the legacy boot options, creates them and
|
||||
registers them in the BootOrder variable.
|
||||
**/
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EFI_BOOT_MANAGER_REFRESH_LEGACY_BOOT_OPTION) (
|
||||
VOID
|
||||
);
|
||||
|
||||
/**
|
||||
The function boots a legacy boot option.
|
||||
**/
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EFI_BOOT_MANAGER_LEGACY_BOOT) (
|
||||
IN EFI_BOOT_MANAGER_LOAD_OPTION *BootOption
|
||||
);
|
||||
|
||||
/**
|
||||
The function registers the legacy boot support capabilities.
|
||||
|
||||
@param RefreshLegacyBootOption The function pointer to create all the legacy boot options.
|
||||
@param LegacyBoot The function pointer to boot the legacy boot option.
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
EfiBootManagerRegisterLegacyBootSupport (
|
||||
EFI_BOOT_MANAGER_REFRESH_LEGACY_BOOT_OPTION RefreshLegacyBootOption,
|
||||
EFI_BOOT_MANAGER_LEGACY_BOOT LegacyBoot
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// Boot Manager connect and disconnect library functions
|
||||
//
|
||||
|
||||
/**
|
||||
This function will connect all the system driver to controller
|
||||
first, and then special connect the default console, this make
|
||||
sure all the system controller available and the platform default
|
||||
console connected.
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
EfiBootManagerConnectAll (
|
||||
VOID
|
||||
);
|
||||
|
||||
/**
|
||||
This function will create all handles associate with every device
|
||||
path node. If the handle associate with one device path node can not
|
||||
be created successfully, then still give one chance to do the dispatch,
|
||||
which load the missing drivers if possible.
|
||||
|
||||
@param DevicePathToConnect The device path which will be connected, it CANNOT be
|
||||
a multi-instance device path
|
||||
@param MatchingHandle Return the controller handle closest to the DevicePathToConnect
|
||||
|
||||
@retval EFI_INVALID_PARAMETER DevicePathToConnect is NULL.
|
||||
@retval EFI_NOT_FOUND Failed to create all handles associate with every device path node.
|
||||
@retval EFI_SUCCESS Successful to create all handles associate with every device path node.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EfiBootManagerConnectDevicePath (
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathToConnect,
|
||||
OUT EFI_HANDLE *MatchingHandle OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
This function will disconnect all current system handles.
|
||||
|
||||
gBS->DisconnectController() is invoked for each handle exists in system handle buffer.
|
||||
If handle is a bus type handle, all childrens also are disconnected recursively by
|
||||
gBS->DisconnectController().
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
EfiBootManagerDisconnectAll (
|
||||
VOID
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// Boot Manager console library functions
|
||||
//
|
||||
|
||||
typedef enum {
|
||||
ConIn,
|
||||
ConOut,
|
||||
ErrOut,
|
||||
ConInDev,
|
||||
ConOutDev,
|
||||
ErrOutDev,
|
||||
ConsoleTypeMax
|
||||
} CONSOLE_TYPE;
|
||||
|
||||
/**
|
||||
This function will connect all the console devices base on the console
|
||||
device variable ConIn, ConOut and ErrOut.
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
EfiBootManagerConnectAllDefaultConsoles (
|
||||
VOID
|
||||
);
|
||||
|
||||
/**
|
||||
This function updates the console variable based on ConVarName. It can
|
||||
add or remove one specific console device path from the variable
|
||||
|
||||
@param ConsoleType ConIn, ConOut, ErrOut, ConInDev, ConOutDev or ErrOutDev.
|
||||
@param CustomizedConDevicePath The console device path to be added to
|
||||
the console variable. Cannot be multi-instance.
|
||||
@param ExclusiveDevicePath The console device path to be removed
|
||||
from the console variable. Cannot be multi-instance.
|
||||
|
||||
@retval EFI_UNSUPPORTED The added device path is the same as a removed one.
|
||||
@retval EFI_SUCCESS Successfully added or removed the device path from the
|
||||
console variable.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EfiBootManagerUpdateConsoleVariable (
|
||||
IN CONSOLE_TYPE ConsoleType,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *CustomizedConDevicePath,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *ExclusiveDevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
Connect the console device base on the variable ConVarName, if
|
||||
device path of the ConVarName is multi-instance device path, if
|
||||
anyone of the instances is connected success, then this function
|
||||
will return success.
|
||||
|
||||
@param ConsoleType ConIn, ConOut or ErrOut.
|
||||
|
||||
@retval EFI_NOT_FOUND There is not any console devices connected
|
||||
success
|
||||
@retval EFI_SUCCESS Success connect any one instance of the console
|
||||
device path base on the variable ConVarName.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EfiBootManagerConnectConsoleVariable (
|
||||
IN CONSOLE_TYPE ConsoleType
|
||||
);
|
||||
|
||||
/**
|
||||
Query all the children of VideoController and return the device paths of all the
|
||||
children that support GraphicsOutput protocol.
|
||||
|
||||
@param VideoController PCI handle of video controller.
|
||||
|
||||
@return Device paths of all the children that support GraphicsOutput protocol.
|
||||
**/
|
||||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
EFIAPI
|
||||
EfiBootManagerGetGopDevicePath (
|
||||
IN EFI_HANDLE VideoController
|
||||
);
|
||||
|
||||
/**
|
||||
Connect the platform active active video controller.
|
||||
|
||||
@param VideoController PCI handle of video controller.
|
||||
|
||||
@retval EFI_NOT_FOUND There is no active video controller.
|
||||
@retval EFI_SUCCESS The video controller is connected.
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EfiBootManagerConnectVideoController (
|
||||
EFI_HANDLE VideoController OPTIONAL
|
||||
);
|
||||
|
||||
//
|
||||
// Boot Manager driver health library functions.
|
||||
//
|
||||
|
||||
typedef struct {
|
||||
EFI_DRIVER_HEALTH_PROTOCOL *DriverHealth;
|
||||
|
||||
///
|
||||
/// Driver relative handles
|
||||
///
|
||||
EFI_HANDLE DriverHealthHandle;
|
||||
EFI_HANDLE ControllerHandle;
|
||||
EFI_HANDLE ChildHandle;
|
||||
|
||||
///
|
||||
/// Driver health messages of the specify Driver
|
||||
///
|
||||
EFI_DRIVER_HEALTH_HII_MESSAGE *MessageList;
|
||||
|
||||
///
|
||||
/// HII relative handles
|
||||
///
|
||||
EFI_HII_HANDLE HiiHandle;
|
||||
|
||||
///
|
||||
/// Driver Health status
|
||||
///
|
||||
EFI_DRIVER_HEALTH_STATUS HealthStatus;
|
||||
} EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO;
|
||||
|
||||
/**
|
||||
Return all the Driver Health information.
|
||||
|
||||
When the cumulative health status of all the controllers managed by the
|
||||
driver who produces the EFI_DRIVER_HEALTH_PROTOCOL is healthy, only one
|
||||
EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO entry is created for such
|
||||
EFI_DRIVER_HEALTH_PROTOCOL instance.
|
||||
Otherwise, every controller creates one EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO
|
||||
entry. Additionally every child controller creates one
|
||||
EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO entry if the driver is a bus driver.
|
||||
|
||||
@param Count Return the count of the Driver Health information.
|
||||
|
||||
@retval NULL No Driver Health information is returned.
|
||||
@retval !NULL Pointer to the Driver Health information array.
|
||||
**/
|
||||
EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO *
|
||||
EFIAPI
|
||||
EfiBootManagerGetDriverHealthInfo (
|
||||
UINTN *Count
|
||||
);
|
||||
|
||||
/**
|
||||
Free the Driver Health information array.
|
||||
|
||||
@param DriverHealthInfo Pointer to array of the Driver Health information.
|
||||
@param Count Count of the array.
|
||||
|
||||
@retval EFI_SUCCESS The array is freed.
|
||||
@retval EFI_INVALID_PARAMETER The array is NULL.
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EfiBootManagerFreeDriverHealthInfo (
|
||||
EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO *DriverHealthInfo,
|
||||
UINTN Count
|
||||
);
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user