mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-10-31 03:58:31 +00:00 
			
		
		
		
	 76f407a69e
			
		
	
	
		76f407a69e
		
	
	
	
	
		
			
			git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2598 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			1160 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			1160 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*++
 | |
| 
 | |
| Copyright (c) 2006, Intel Corporation                                                         
 | |
| All rights reserved. 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.             
 | |
| 
 | |
| Module Name:
 | |
| 
 | |
|   BootMaint.h
 | |
| 
 | |
| Abstract:
 | |
| 
 | |
| Revision History
 | |
| 
 | |
| --*/
 | |
| 
 | |
| #ifndef _BOOT_MAINT_H
 | |
| #define _BOOT_MAINT_H
 | |
| 
 | |
| #include "EdkGenericPlatformBdsLibStrDefs.h"
 | |
| #include "BootMaint/BBSsupport.h"
 | |
| 
 | |
| //
 | |
| // Constants which are variable names used to access variables
 | |
| //
 | |
| #define VarLegacyDevOrder L"LegacyDevOrder"
 | |
| 
 | |
| //
 | |
| // Guid of a NV Variable which store the information about the
 | |
| // FD/HD/CD/NET/BEV order
 | |
| //
 | |
| #define EFI_LEGACY_DEV_ORDER_VARIABLE_GUID \
 | |
|   { \
 | |
|     0xa56074db, 0x65fe, 0x45f7, {0xbd, 0x21, 0x2d, 0x2b, 0xdd, 0x8e, 0x96, 0x52 } \
 | |
|   }
 | |
| 
 | |
| //
 | |
| // String Contant
 | |
| //
 | |
| #define StrFloppy       L"Floppy Drive #%02x"
 | |
| #define StrHardDisk     L"HardDisk Drive #%02x"
 | |
| #define StrCDROM        L"ATAPI CDROM Drive #%02x"
 | |
| #define StrNET          L"NET Drive #%02x"
 | |
| #define StrBEV          L"BEV Drive #%02x"
 | |
| #define StrFloppyHelp   L"Select Floppy Drive #%02x"
 | |
| #define StrHardDiskHelp L"Select HardDisk Drive #%02x"
 | |
| #define StrCDROMHelp    L"Select ATAPI CDROM Drive #%02x"
 | |
| #define StrNETHelp      L"NET Drive #%02x"
 | |
| #define StrBEVHelp      L"BEV Drive #%02x"
 | |
| 
 | |
| //
 | |
| // Constant will be used in display and file system navigation
 | |
| //
 | |
| #define UPDATE_DATA_SIZE        0x100000
 | |
| #define MAX_BBS_OFFSET          0xE000
 | |
| #define NET_OPTION_OFFSET       0xD800
 | |
| #define BEV_OPTION_OFFSET       0xD000
 | |
| #define FD_OPTION_OFFSET        0xC000
 | |
| #define HD_OPTION_OFFSET        0xB000
 | |
| #define CD_OPTION_OFFSET        0xA000
 | |
| #define FILE_OPTION_OFFSET      0x8000
 | |
| #define FILE_OPTION_MASK        0x7FFF
 | |
| #define HANDLE_OPTION_OFFSET    0x7000
 | |
| #define CONSOLE_OPTION_OFFSET   0x0A00
 | |
| #define TERMINAL_OPTION_OFFSET  0x0700
 | |
| #define NORMAL_GOTO_OFFSET      0x0100
 | |
| #define MAX_STRING_TOKEN_COUNT  0x00FF
 | |
| //
 | |
| // Variable created with this flag will be "Efi:...."
 | |
| //
 | |
| #define VAR_FLAG  EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE
 | |
| 
 | |
| //
 | |
| // Define Maxmim characters that will be accepted
 | |
| //
 | |
| #define MAX_CHAR      480
 | |
| #define MAX_CHAR_SIZE (MAX_CHAR * 2)
 | |
| 
 | |
| //
 | |
| // Check to see if current build support option active feature of
 | |
| // some driver option
 | |
| //
 | |
| #define LOAD_OPTION_ACTIVE  0x00000001
 | |
| 
 | |
| //
 | |
| // Check to see if current build support force reconnect feature of
 | |
| // some driver option
 | |
| //
 | |
| #define LOAD_OPTION_FORCE_RECONNECT 0x00000002
 | |
| 
 | |
| //
 | |
| // Below are the form ids for display, form id is used as callback key value,
 | |
| // some key value definitions are also defined here. By defining this enum type,
 | |
| // We can easy know where we are. The int to UINT16 convertion should be ok because
 | |
| // there is a MAXIMUM_FORM_ID which in within the range of UINT16.
 | |
| //
 | |
| typedef enum {
 | |
|   IplRelative,
 | |
|   BcvRelative
 | |
| } BBS_TYPE;
 | |
| 
 | |
| typedef enum {
 | |
|   FORM_RESERVED_ID                    = 0,
 | |
|   FORM_MAIN_ID,                         // 0x0001
 | |
|   FORM_BOOT_ADD_ID,                     // 0x0002
 | |
|   FORM_BOOT_DEL_ID,                     // 0x0003
 | |
|   FORM_BOOT_CHG_ID,                     // 0x0004
 | |
|   FORM_DRV_ADD_ID,                      // 0x0005
 | |
|   FORM_DRV_DEL_ID,                      // 0x0006
 | |
|   FORM_DRV_CHG_ID,                      // 0x0007
 | |
|   FORM_CON_MAIN_ID,                     // 0x0008
 | |
|   FORM_CON_IN_ID,                       // 0x0009
 | |
|   FORM_CON_OUT_ID,                      // 0x000A
 | |
|   FORM_CON_ERR_ID,                      // 0x000B
 | |
|   FORM_FILE_SEEK_ID,                    // 0x000C
 | |
|   FORM_FILE_NEW_SEEK_ID,                // 0x000D
 | |
|   FORM_DRV_ADD_FILE_ID,                 // 0x000E
 | |
|   FORM_DRV_ADD_HANDLE_ID,               // 0x000F
 | |
|   FORM_DRV_ADD_HANDLE_DESC_ID,          // 0x0010
 | |
|   FORM_BOOT_NEXT_ID,                    // 0x0011
 | |
|   FORM_TIME_OUT_ID,                     // 0x0012
 | |
|   FORM_RESET,                           // 0x0013
 | |
|   FORM_BOOT_SETUP_ID,                   // 0x0014
 | |
|   FORM_DRIVER_SETUP_ID,                 // 0x0015
 | |
|   FORM_BOOT_LEGACY_DEVICE_ID,           // 0x0016
 | |
|   FORM_CON_COM_ID,                      // 0x0017
 | |
|   FORM_CON_COM_SETUP_ID,                // 0x0018
 | |
|   FORM_SET_FD_ORDER_ID,                 // 0x0019
 | |
|   FORM_SET_HD_ORDER_ID,                 // 0x001A
 | |
|   FORM_SET_CD_ORDER_ID,                 // 0x001B
 | |
|   FORM_SET_NET_ORDER_ID,                // 0x001C
 | |
|   FORM_SET_BEV_ORDER_ID,                // 0x001D
 | |
|   FORM_FILE_EXPLORER_ID,                // 0x001E
 | |
|   FORM_BOOT_ADD_DESCRIPTION_ID,         // 0x001F
 | |
|   FORM_DRIVER_ADD_FILE_DESCRIPTION_ID,  // 0x0020
 | |
| } FORM_ID;
 | |
| 
 | |
| #define MAXIMUM_FORM_ID                 0x007F
 | |
| 
 | |
| #define KEY_VALUE_COM_SET_BAUD_RATE     0x0080
 | |
| #define KEY_VALUE_COM_SET_DATA_BITS     0x0081
 | |
| #define KEY_VALUE_COM_SET_STOP_BITS     0x0082
 | |
| #define KEY_VALUE_COM_SET_PARITY        0x0083
 | |
| #define KEY_VALUE_COM_SET_TERMI_TYPE    0x0084
 | |
| #define KEY_VALUE_MAIN_BOOT_NEXT        0x0085
 | |
| #define KEY_VALUE_BOOT_ADD_DESC_DATA    0x0086
 | |
| #define KEY_VALUE_BOOT_ADD_OPT_DATA     0x0087
 | |
| #define KEY_VALUE_DRIVER_ADD_DESC_DATA  0x0088
 | |
| #define KEY_VALUE_DRIVER_ADD_OPT_DATA   0x0089
 | |
| #define KEY_VALUE_SAVE_AND_EXIT         0x0090
 | |
| #define KEY_VALUE_NO_SAVE_AND_EXIT      0x0091
 | |
| #define KEY_VALUE_BOOT_FROM_FILE        0x0092
 | |
| 
 | |
| #define MAXIMUM_NORMAL_KEY_VALUE        NORMAL_GOTO_OFFSET
 | |
| //
 | |
| // Below are the number of options in Baudrate, Databits,
 | |
| // Parity and Stopbits selection for serial ports.
 | |
| //
 | |
| #define BM_COM_ATTR_BUADRATE  19
 | |
| #define BM_COM_ATTR_DATABITS  4
 | |
| #define BM_COM_ATTR_PARITY    5
 | |
| #define BM_COM_ATTR_STOPBITS  3
 | |
| 
 | |
| //
 | |
| // Callback function helper
 | |
| //
 | |
| #define BMM_CALLBACK_DATA_SIGNATURE     EFI_SIGNATURE_32 ('C', 'b', 'c', 'k')
 | |
| #define BMM_CALLBACK_DATA_FROM_THIS(a)  CR (a, BMM_CALLBACK_DATA, BmmDriverCallback, BMM_CALLBACK_DATA_SIGNATURE)
 | |
| 
 | |
| #define FE_CALLBACK_DATA_FROM_THIS(a)   CR (a, BMM_CALLBACK_DATA, FeDriverCallback, BMM_CALLBACK_DATA_SIGNATURE)
 | |
| 
 | |
| //
 | |
| // Enumeration type definition
 | |
| //
 | |
| typedef enum {
 | |
|   PC_ANSI                             = 0,
 | |
|   VT_100,
 | |
|   VT_100_PLUS,
 | |
|   VT_UTF8
 | |
| } TYPE_OF_TERMINAL;
 | |
| 
 | |
| typedef enum {
 | |
|   COM1                                = 0,
 | |
|   COM2,
 | |
|   UNKNOW_COM
 | |
| } TYPE_OF_COM;
 | |
| 
 | |
| typedef enum {
 | |
|   CONIN                               = 0,
 | |
|   CONOUT,
 | |
|   CONERR,
 | |
|   UNKNOWN_CON
 | |
| } TYPE_OF_CON;
 | |
| 
 | |
| typedef enum {
 | |
|   BAUDRATE                            = 0,
 | |
|   DATABITS,
 | |
|   PARITY,
 | |
|   STOPBITS,
 | |
|   UNKNOW_ATTR
 | |
| } TYPE_OF_ATTRIBUTE;
 | |
| 
 | |
| typedef enum {
 | |
|   MANNER_GOTO                         = 0,
 | |
|   MANNER_CHECK,
 | |
|   MANNER_ONEOF,
 | |
|   MANNER_USER_DEFINE
 | |
| } TYPE_OF_UPATE_MANNER;
 | |
| 
 | |
| typedef enum {
 | |
|   INACTIVE_STATE                      = 0,
 | |
|   BOOT_FROM_FILE_STATE,
 | |
|   ADD_BOOT_OPTION_STATE,
 | |
|   ADD_DRIVER_OPTION_STATE,
 | |
|   UNKNOWN_STATE
 | |
| } FILE_EXPLORER_STATE;
 | |
| 
 | |
| typedef enum {
 | |
|   FILE_SYSTEM,
 | |
|   DIRECTORY,
 | |
|   UNKNOWN_CONTEXT
 | |
| } FILE_EXPLORER_DISPLAY_CONTEXT;
 | |
| 
 | |
| //
 | |
| // All of the signatures that will be used in list structure
 | |
| //
 | |
| #define BM_MENU_OPTION_SIGNATURE      EFI_SIGNATURE_32 ('m', 'e', 'n', 'u')
 | |
| #define BM_LOAD_OPTION_SIGNATURE      EFI_SIGNATURE_32 ('l', 'o', 'a', 'd')
 | |
| #define BM_CONSOLE_OPTION_SIGNATURE   EFI_SIGNATURE_32 ('c', 'n', 's', 'l')
 | |
| #define BM_FILE_OPTION_SIGNATURE      EFI_SIGNATURE_32 ('f', 'i', 'l', 'e')
 | |
| #define BM_HANDLE_OPTION_SIGNATURE    EFI_SIGNATURE_32 ('h', 'n', 'd', 'l')
 | |
| #define BM_TERMINAL_OPTION_SIGNATURE  EFI_SIGNATURE_32 ('t', 'r', 'm', 'l')
 | |
| #define BM_MENU_ENTRY_SIGNATURE       EFI_SIGNATURE_32 ('e', 'n', 't', 'r')
 | |
| 
 | |
| #define BM_LOAD_CONTEXT_SELECT        0x0
 | |
| #define BM_CONSOLE_CONTEXT_SELECT     0x1
 | |
| #define BM_FILE_CONTEXT_SELECT        0x2
 | |
| #define BM_HANDLE_CONTEXT_SELECT      0x3
 | |
| #define BM_TERMINAL_CONTEXT_SELECT    0x5
 | |
| 
 | |
| #define BM_CONSOLE_IN_CONTEXT_SELECT  0x6
 | |
| #define BM_CONSOLE_OUT_CONTEXT_SELECT 0x7
 | |
| #define BM_CONSOLE_ERR_CONTEXT_SELECT 0x8
 | |
| #define BM_LEGACY_DEV_CONTEXT_SELECT  0x9
 | |
| 
 | |
| //
 | |
| // Question Id that will be used to create question
 | |
| // all these values are computed from the structure
 | |
| // defined below
 | |
| //
 | |
| #define QUESTION_ID(Field)              ((UINTN) &(((BMM_FAKE_NV_DATA *) 0)->Field))
 | |
| 
 | |
| #define BOOT_TIME_OUT_QUESTION_ID       QUESTION_ID (BootTimeOut)
 | |
| #define BOOT_NEXT_QUESTION_ID           QUESTION_ID (BootNext)
 | |
| #define COM1_BAUD_RATE_QUESTION_ID      QUESTION_ID (COM1BaudRate)
 | |
| #define COM1_DATA_RATE_QUESTION_ID      QUESTION_ID (COM1DataRate)
 | |
| #define COM1_STOP_BITS_QUESTION_ID      QUESTION_ID (COM1StopBits)
 | |
| #define COM1_PARITY_QUESTION_ID         QUESTION_ID (COM1Parity)
 | |
| #define COM1_TERMINAL_QUESTION_ID       QUESTION_ID (COM2TerminalType)
 | |
| #define COM2_BAUD_RATE_QUESTION_ID      QUESTION_ID (COM2BaudRate)
 | |
| #define COM2_DATA_RATE_QUESTION_ID      QUESTION_ID (COM2DataRate)
 | |
| #define COM2_STOP_BITS_QUESTION_ID      QUESTION_ID (COM2StopBits)
 | |
| #define COM2_PARITY_QUESTION_ID         QUESTION_ID (COM2Parity)
 | |
| #define COM2_TERMINAL_QUESTION_ID       QUESTION_ID (COM2TerminalType)
 | |
| #define DRV_ADD_HANDLE_DESC_QUESTION_ID QUESTION_ID (DriverAddHandleDesc)
 | |
| #define DRV_ADD_ACTIVE_QUESTION_ID      QUESTION_ID (DriverAddActive)
 | |
| #define DRV_ADD_RECON_QUESTION_ID       QUESTION_ID (DriverAddForceReconnect)
 | |
| #define CON_IN_COM1_QUESTION_ID         QUESTION_ID (ConsoleInputCOM1)
 | |
| #define CON_IN_COM2_QUESTION_ID         QUESTION_ID (ConsoleInputCOM2)
 | |
| #define CON_OUT_COM1_QUESTION_ID        QUESTION_ID (ConsoleOutputCOM1)
 | |
| #define CON_OUT_COM2_QUESTION_ID        QUESTION_ID (ConsoleOutputCOM2)
 | |
| #define CON_ERR_COM1_QUESTION_ID        QUESTION_ID (ConsoleErrorCOM1)
 | |
| #define CON_ERR_COM2_QUESTION_ID        QUESTION_ID (ConsoleErrorCOM2)
 | |
| #define CON_DEVICE_QUESTION_ID          QUESTION_ID (ConsoleCheck)
 | |
| #define OPTION_ORDER_QUESTION_ID        QUESTION_ID (OptionOrder)
 | |
| #define DRIVER_OPTION_ORDER_QUESTION_ID QUESTION_ID (DriverOptionToBeDeleted)
 | |
| #define BOOT_OPTION_DEL_QUESTION_ID     QUESTION_ID (BootOptionDel)
 | |
| #define DRIVER_OPTION_DEL_QUESTION_ID   QUESTION_ID (DriverOptionDel)
 | |
| #define DRIVER_ADD_OPTION_QUESTION_ID   QUESTION_ID (DriverAddHandleOptionalData)
 | |
| #define COM_BAUD_RATE_QUESTION_ID       QUESTION_ID (COMBaudRate)
 | |
| #define COM_DATA_RATE_QUESTION_ID       QUESTION_ID (COMDataRate)
 | |
| #define COM_STOP_BITS_QUESTION_ID       QUESTION_ID (COMStopBits)
 | |
| #define COM_PARITY_QUESTION_ID          QUESTION_ID (COMParity)
 | |
| #define COM_TERMINAL_QUESTION_ID        QUESTION_ID (COMTerminalType)
 | |
| #define LEGACY_FD_QUESTION_ID           QUESTION_ID (LegacyFD)
 | |
| #define LEGACY_HD_QUESTION_ID           QUESTION_ID (LegacyHD)
 | |
| #define LEGACY_CD_QUESTION_ID           QUESTION_ID (LegacyCD)
 | |
| #define LEGACY_NET_QUESTION_ID          QUESTION_ID (LegacyNET)
 | |
| #define LEGACY_BEV_QUESTION_ID          QUESTION_ID (LegacyBEV)
 | |
| 
 | |
| #define STRING_DEPOSITORY_NUMBER        8
 | |
| 
 | |
| //
 | |
| // #pragma pack(1)
 | |
| //
 | |
| // Serial Ports attributes, first one is the value for
 | |
| // return from callback function, stringtoken is used to
 | |
| // display the value properly
 | |
| //
 | |
| typedef struct {
 | |
|   UINTN   Value;
 | |
|   UINT16  StringToken;
 | |
| } COM_ATTR;
 | |
| 
 | |
| //
 | |
| // This is the structure that will be used to store the
 | |
| // question's current value. Use it at initialize time to
 | |
| // set default value for each question. When using at run
 | |
| // time, this map is returned by the callback function,
 | |
| // so dynamically changing the question's value will be
 | |
| // possible through this mechanism
 | |
| //
 | |
| typedef struct {
 | |
|   //
 | |
|   // Three questions displayed at the main page
 | |
|   // for Timeout, BootNext Variables respectively
 | |
|   //
 | |
|   UINT16  BootTimeOut;
 | |
|   UINT16  BootNext;
 | |
| 
 | |
|   //
 | |
|   // This is the COM1 Attributes value storage
 | |
|   //
 | |
|   UINT8   COM1BaudRate;
 | |
|   UINT8   COM1DataRate;
 | |
|   UINT8   COM1StopBits;
 | |
|   UINT8   COM1Parity;
 | |
|   UINT8   COM1TerminalType;
 | |
| 
 | |
|   //
 | |
|   // This is the COM2 Attributes value storage
 | |
|   //
 | |
|   UINT8   COM2BaudRate;
 | |
|   UINT8   COM2DataRate;
 | |
|   UINT8   COM2StopBits;
 | |
|   UINT8   COM2Parity;
 | |
|   UINT8   COM2TerminalType;
 | |
| 
 | |
|   //
 | |
|   // Driver Option Add Handle page storage
 | |
|   //
 | |
|   UINT16  DriverAddHandleDesc[100];
 | |
|   UINT16  DriverAddHandleOptionalData[100];
 | |
|   UINT8   DriverAddActive;
 | |
|   UINT8   DriverAddForceReconnect;
 | |
| 
 | |
|   //
 | |
|   // Console Input/Output/Errorout using COM port check storage
 | |
|   //
 | |
|   UINT8   ConsoleInputCOM1;
 | |
|   UINT8   ConsoleInputCOM2;
 | |
|   UINT8   ConsoleOutputCOM1;
 | |
|   UINT8   ConsoleOutputCOM2;
 | |
|   UINT8   ConsoleErrorCOM1;
 | |
|   UINT8   ConsoleErrorCOM2;
 | |
| 
 | |
|   //
 | |
|   // At most 100 input/output/errorout device for console storage
 | |
|   //
 | |
|   UINT8   ConsoleCheck[100];
 | |
| 
 | |
|   //
 | |
|   // Boot or Driver Option Order storage
 | |
|   //
 | |
|   UINT8   OptionOrder[100];
 | |
|   UINT8   DriverOptionToBeDeleted[100];
 | |
| 
 | |
|   //
 | |
|   // Boot Option Delete storage
 | |
|   //
 | |
|   UINT8   BootOptionDel[100];
 | |
|   UINT8   DriverOptionDel[100];
 | |
| 
 | |
|   //
 | |
|   // This is the Terminal Attributes value storage
 | |
|   //
 | |
|   UINT8   COMBaudRate;
 | |
|   UINT8   COMDataRate;
 | |
|   UINT8   COMStopBits;
 | |
|   UINT8   COMParity;
 | |
|   UINT8   COMTerminalType;
 | |
| 
 | |
|   //
 | |
|   // Legacy Device Order Selection Storage
 | |
|   //
 | |
|   UINT8   LegacyFD[100];
 | |
|   UINT8   LegacyHD[100];
 | |
|   UINT8   LegacyCD[100];
 | |
|   UINT8   LegacyNET[100];
 | |
|   UINT8   LegacyBEV[100];
 | |
| 
 | |
|   //
 | |
|   // We use DisableMap array to record the enable/disable state of each boot device
 | |
|   // It should be taken as a bit array, from left to right there are totally 256 bits
 | |
|   // the most left one stands for BBS table item 0, and the most right one stands for item 256
 | |
|   // If the bit is 1, it means the boot device has been disabled.
 | |
|   //
 | |
|   UINT8   DisableMap[32];
 | |
| 
 | |
|   //
 | |
|   //  UINT16                    PadArea[10];
 | |
|   //
 | |
| } BMM_FAKE_NV_DATA;
 | |
| 
 | |
| typedef struct {
 | |
|   UINT16  DescriptionData[75];
 | |
|   UINT16                    OptionalData[127];
 | |
|   UINT8   Active;
 | |
|   UINT8   ForceReconnect;
 | |
| } FILE_EXPLORER_NV_DATA;
 | |
| 
 | |
| typedef struct {
 | |
|   BBS_TYPE  BbsType;
 | |
|   //
 | |
|   // Length = sizeof (UINT16) + SIZEOF (Data)
 | |
|   //
 | |
|   UINT16    Length;
 | |
|   UINT16    *Data;
 | |
| } BM_LEGACY_DEV_ORDER_CONTEXT;
 | |
| 
 | |
| typedef struct {
 | |
|   UINT64                    BaudRate;
 | |
|   UINT8                     DataBits;
 | |
|   UINT8                     Parity;
 | |
|   UINT8                     StopBits;
 | |
| 
 | |
|   UINT8                     BaudRateIndex;
 | |
|   UINT8                     DataBitsIndex;
 | |
|   UINT8                     ParityIndex;
 | |
|   UINT8                     StopBitsIndex;
 | |
| 
 | |
|   UINT8                     IsConIn;
 | |
|   UINT8                     IsConOut;
 | |
|   UINT8                     IsStdErr;
 | |
|   UINT8                     TerminalType;
 | |
| 
 | |
|   EFI_DEVICE_PATH_PROTOCOL  *DevicePath;
 | |
| } BM_TERMINAL_CONTEXT;
 | |
| 
 | |
| typedef struct {
 | |
|   BOOLEAN                   IsBootNext;
 | |
|   BOOLEAN                   LoadOptionModified;
 | |
|   BOOLEAN                   Deleted;
 | |
| 
 | |
|   BOOLEAN                   IsLegacy;
 | |
|   BOOLEAN                   IsActive;
 | |
|   BOOLEAN                   ForceReconnect;
 | |
|   UINTN                     OptionalDataSize;
 | |
| 
 | |
|   UINTN                     LoadOptionSize;
 | |
|   UINT8                     *LoadOption;
 | |
| 
 | |
|   UINT32                    Attributes;
 | |
|   UINT16                    FilePathListLength;
 | |
|   UINT16                    *Description;
 | |
|   EFI_DEVICE_PATH_PROTOCOL  *FilePathList;
 | |
|   UINT8                     *OptionalData;
 | |
| 
 | |
|   UINT16                    BbsIndex;
 | |
| } BM_LOAD_CONTEXT;
 | |
| 
 | |
| typedef struct {
 | |
|   BBS_TABLE *BbsTable;
 | |
|   UINTN     Index;
 | |
|   UINTN     BbsCount;
 | |
|   UINT16    *Description;
 | |
| } BM_LEGACY_DEVICE_CONTEXT;
 | |
| 
 | |
| typedef struct {
 | |
| 
 | |
|   BOOLEAN                   IsActive;
 | |
| 
 | |
|   BOOLEAN                   IsTerminal;
 | |
| 
 | |
|   EFI_DEVICE_PATH_PROTOCOL  *DevicePath;
 | |
| } BM_CONSOLE_CONTEXT;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_HANDLE                        Handle;
 | |
|   EFI_DEVICE_PATH_PROTOCOL          *DevicePath;
 | |
|   EFI_FILE_HANDLE                   FHandle;
 | |
|   UINT16                            *FileName;
 | |
|   EFI_FILE_SYSTEM_VOLUME_LABEL_INFO *Info;
 | |
| 
 | |
|   BOOLEAN                           IsRoot;
 | |
|   BOOLEAN                           IsDir;
 | |
|   BOOLEAN                           IsRemovableMedia;
 | |
|   BOOLEAN                           IsLoadFile;
 | |
|   BOOLEAN                           IsBootLegacy;
 | |
| } BM_FILE_CONTEXT;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_HANDLE                Handle;
 | |
|   EFI_DEVICE_PATH_PROTOCOL  *DevicePath;
 | |
| } BM_HANDLE_CONTEXT;
 | |
| 
 | |
| typedef struct {
 | |
|   UINTN           Signature;
 | |
|   LIST_ENTRY      Head;
 | |
|   UINTN           MenuNumber;
 | |
| } BM_MENU_OPTION;
 | |
| 
 | |
| typedef struct {
 | |
|   UINTN           Signature;
 | |
|   LIST_ENTRY      Link;
 | |
|   UINTN           OptionNumber;
 | |
|   UINT16          *DisplayString;
 | |
|   UINT16          *HelpString;
 | |
|   STRING_REF      DisplayStringToken;
 | |
|   STRING_REF      HelpStringToken;
 | |
|   UINTN           ContextSelection;
 | |
|   VOID            *VariableContext;
 | |
| } BM_MENU_ENTRY;
 | |
| 
 | |
| typedef struct {
 | |
|   //
 | |
|   // Shared callback data.
 | |
|   //
 | |
|   UINTN                         Signature;
 | |
|   EFI_HII_PROTOCOL              *Hii;
 | |
|   BM_MENU_ENTRY                 *MenuEntry;
 | |
|   BM_HANDLE_CONTEXT             *HandleContext;
 | |
|   BM_FILE_CONTEXT               *FileContext;
 | |
|   BM_LOAD_CONTEXT               *LoadContext;
 | |
|   BM_TERMINAL_CONTEXT           *TerminalContext;
 | |
|   UINTN                         CurrentTerminal;
 | |
|   BBS_TYPE                      BbsType;
 | |
| 
 | |
|   //
 | |
|   // BMM main formset callback data.
 | |
|   //
 | |
|   EFI_HII_HANDLE                BmmHiiHandle;
 | |
|   EFI_HANDLE                    BmmCallbackHandle;
 | |
|   EFI_FORM_CALLBACK_PROTOCOL    BmmDriverCallback;
 | |
|   FORM_ID                       BmmCurrentPageId;
 | |
|   FORM_ID                       BmmPreviousPageId;
 | |
|   BOOLEAN                       BmmAskSaveOrNot;
 | |
|   BMM_FAKE_NV_DATA              *BmmFakeNvData;
 | |
|   BMM_FAKE_NV_DATA              BmmOldFakeNVData;
 | |
| 
 | |
|   //
 | |
|   // File explorer formset callback data.
 | |
|   //
 | |
|   EFI_HII_HANDLE                FeHiiHandle;
 | |
|   EFI_HANDLE                    FeCallbackHandle;
 | |
|   EFI_FORM_CALLBACK_PROTOCOL    FeDriverCallback;
 | |
|   FILE_EXPLORER_STATE           FeCurrentState;
 | |
|   FILE_EXPLORER_DISPLAY_CONTEXT FeDisplayContext;
 | |
| } BMM_CALLBACK_DATA;
 | |
| 
 | |
| typedef struct _STRING_LIST_NODE {
 | |
|   STRING_REF                StringToken;
 | |
|   struct _STRING_LIST_NODE  *Next;
 | |
| } STRING_LIST_NODE;
 | |
| 
 | |
| typedef struct _STRING_DEPOSITORY {
 | |
|   UINTN             TotalNodeNumber;
 | |
|   STRING_LIST_NODE  *CurrentNode;
 | |
|   STRING_LIST_NODE  *ListHead;
 | |
| } STRING_DEPOSITORY;
 | |
| 
 | |
| //
 | |
| // #pragma pack()
 | |
| //
 | |
| // For initializing File System menu
 | |
| //
 | |
| EFI_STATUS
 | |
| BOpt_FindFileSystem (
 | |
|   IN BMM_CALLBACK_DATA          *CallbackData
 | |
|   )
 | |
| ;
 | |
| 
 | |
| //
 | |
| // For cleaning up File System menu
 | |
| //
 | |
| VOID
 | |
| BOpt_FreeFileSystem (
 | |
|   VOID
 | |
|   )
 | |
| ;
 | |
| 
 | |
| //
 | |
| // For initializing File Navigation menu
 | |
| //
 | |
| EFI_STATUS
 | |
| BOpt_FindFiles (
 | |
|   IN BMM_CALLBACK_DATA          *CallbackData,
 | |
|   IN BM_MENU_ENTRY              *MenuEntry
 | |
|   )
 | |
| ;
 | |
| 
 | |
| //
 | |
| // For cleaning up File Navigation menu
 | |
| //
 | |
| VOID
 | |
| BOpt_FreeFiles (
 | |
|   VOID
 | |
|   )
 | |
| ;
 | |
| 
 | |
| //
 | |
| // For Initializing handle navigation menu
 | |
| //
 | |
| EFI_STATUS
 | |
| BOpt_FindDrivers (
 | |
|   VOID
 | |
|   )
 | |
| ;
 | |
| 
 | |
| //
 | |
| // For Cleaning up handle navigation menu
 | |
| //
 | |
| VOID
 | |
| BOpt_FreeDrivers();
 | |
| 
 | |
| //
 | |
| // For initializing Boot Option menu
 | |
| //
 | |
| EFI_STATUS
 | |
| BOpt_GetBootOptions (
 | |
|   IN  BMM_CALLBACK_DATA         *CallbackData
 | |
|   );
 | |
| 
 | |
| //
 | |
| // For Initializing Driver option menu
 | |
| //
 | |
| EFI_STATUS
 | |
| BOpt_GetDriverOptions (
 | |
|   IN  BMM_CALLBACK_DATA         *CallbackData
 | |
|   );
 | |
| 
 | |
| //
 | |
| // For Cleaning up boot option menu
 | |
| //
 | |
| VOID
 | |
| BOpt_FreeBootOptions ();
 | |
| 
 | |
| //
 | |
| // For cleaning up driver option menu
 | |
| //
 | |
| VOID
 | |
| BOpt_FreeDriverOptions();
 | |
| 
 | |
| //
 | |
| // For Initializing HD/FD/CD/NET/BEV option menu
 | |
| //
 | |
| EFI_STATUS
 | |
| BOpt_GetLegacyOptions();
 | |
| 
 | |
| //
 | |
| // For cleaning up driver option menu
 | |
| //
 | |
| VOID
 | |
| BOpt_FreeLegacyOptions();
 | |
| 
 | |
| //
 | |
| // this function is used to take place of all other free menu actions
 | |
| //
 | |
| VOID
 | |
| BOpt_FreeMenu (
 | |
|   BM_MENU_OPTION        *FreeMenu
 | |
|   );
 | |
| 
 | |
| 
 | |
| //
 | |
| // Following are the helper functions used
 | |
| //
 | |
| CHAR16                            *
 | |
| BOpt_AppendFileName (
 | |
|   IN  CHAR16  *Str1,
 | |
|   IN  CHAR16  *Str2
 | |
|   );
 | |
| 
 | |
| BOOLEAN
 | |
| BOpt_IsEfiImageName (
 | |
|   IN UINT16  *FileName
 | |
|   );
 | |
| 
 | |
| BOOLEAN
 | |
| BOpt_IsEfiApp (
 | |
|   IN EFI_FILE_HANDLE Dir,
 | |
|   IN UINT16          *FileName
 | |
|   );
 | |
| 
 | |
| //
 | |
| // Get current unused boot option number
 | |
| //
 | |
| UINT16
 | |
| BOpt_GetBootOptionNumber ();
 | |
| 
 | |
| //
 | |
| // Get current unused driver option number
 | |
| //
 | |
| UINT16
 | |
| BOpt_GetDriverOptionNumber ();
 | |
| 
 | |
| BM_MENU_ENTRY                     *
 | |
| BOpt_CreateMenuEntry (
 | |
|   UINTN           MenuType
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| BOpt_DestroyMenuEntry (
 | |
|   BM_MENU_ENTRY         *MenuEntry
 | |
|   );
 | |
| 
 | |
| BM_MENU_ENTRY                     *
 | |
| BOpt_GetMenuEntry (
 | |
|   BM_MENU_OPTION      *MenuOption,
 | |
|   UINTN               MenuNumber
 | |
|   );
 | |
| 
 | |
| //
 | |
| // a helper function used to free pool type memory
 | |
| //
 | |
| VOID
 | |
| SafeFreePool (
 | |
|   IN VOID *Buffer
 | |
|   );
 | |
| 
 | |
| //
 | |
| // Locate all serial io devices for console
 | |
| //
 | |
| EFI_STATUS
 | |
| LocateSerialIo ();
 | |
| 
 | |
| //
 | |
| // Initializing Console menu
 | |
| //
 | |
| EFI_STATUS
 | |
| GetAllConsoles();
 | |
| 
 | |
| //
 | |
| // Cleaning up console menu
 | |
| //
 | |
| EFI_STATUS
 | |
| FreeAllConsoles();
 | |
| 
 | |
| VOID
 | |
| ChangeVariableDevicePath (
 | |
|   EFI_DEVICE_PATH_PROTOCOL  *DevicePath
 | |
| ); 
 | |
| 
 | |
| EFI_STATUS
 | |
| ChangeTerminalDevicePath (
 | |
|   EFI_DEVICE_PATH_PROTOCOL  *DevicePath,
 | |
|   BOOLEAN                   ChangeTerminal
 | |
| );
 | |
| //
 | |
| // Variable operation by menu selection
 | |
| //
 | |
| EFI_STATUS
 | |
| Var_UpdateBootOption (
 | |
|   IN  BMM_CALLBACK_DATA                   *CallbackData,
 | |
|   IN  FILE_EXPLORER_NV_DATA               *NvRamMap
 | |
|   );
 | |
| 
 | |
| EFI_STATUS
 | |
| Var_DelBootOption ();
 | |
| 
 | |
| EFI_STATUS
 | |
| Var_ChangeBootOrder ();
 | |
| 
 | |
| EFI_STATUS
 | |
| Var_UpdateDriverOption (
 | |
|   IN  BMM_CALLBACK_DATA         *CallbackData,
 | |
|   IN  EFI_HII_HANDLE            HiiHandle,
 | |
|   IN  UINT16                    *DescriptionData,
 | |
|   IN  UINT16                    *OptionalData,
 | |
|   IN  UINT8                     ForceReconnect
 | |
|   );
 | |
| 
 | |
| EFI_STATUS
 | |
| Var_DelDriverOption ();
 | |
| 
 | |
| EFI_STATUS
 | |
| Var_ChangeDriverOrder ();
 | |
| 
 | |
| EFI_STATUS
 | |
| Var_UpdateConsoleInpOption ();
 | |
| 
 | |
| EFI_STATUS
 | |
| Var_UpdateConsoleOutOption ();
 | |
| 
 | |
| EFI_STATUS
 | |
| Var_UpdateErrorOutOption ();
 | |
| 
 | |
| VOID
 | |
| Var_UpdateAllConsoleOption ();
 | |
| 
 | |
| EFI_STATUS
 | |
| Var_UpdateBootNext (
 | |
|   IN BMM_CALLBACK_DATA            *CallbackData
 | |
|   );
 | |
| 
 | |
| EFI_STATUS
 | |
| Var_UpdateBootOrder (
 | |
|   IN BMM_CALLBACK_DATA            *CallbackData
 | |
|   );
 | |
| 
 | |
| EFI_STATUS
 | |
| Var_UpdateDriverOrder (
 | |
|   IN BMM_CALLBACK_DATA            *CallbackData
 | |
|   );
 | |
| 
 | |
| EFI_STATUS
 | |
| Var_UpdateBBSOption (
 | |
|   IN BMM_CALLBACK_DATA            *CallbackData
 | |
|   );
 | |
| 
 | |
| //
 | |
| // Following are page create and refresh functions
 | |
| //
 | |
| VOID
 | |
| RefreshUpdateData (
 | |
|   IN BOOLEAN                          FormSetUpdate,
 | |
|   IN EFI_PHYSICAL_ADDRESS             FormCallbackHandle,
 | |
|   IN BOOLEAN                          FormUpdate,
 | |
|   IN STRING_REF                       FormTitle,
 | |
|   IN UINT16                           DataCount
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| CleanUpPage (
 | |
|   IN EFI_FORM_LABEL                   LabelId,
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData
 | |
|   );
 | |
| 
 | |
| EFI_STATUS
 | |
| UpdatePage (
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData,
 | |
|   IN BM_MENU_OPTION                   *UpdatingMenu,
 | |
|   IN UINT16                           UpdatingPage,
 | |
|   IN UINT16                           UpdatingManner,
 | |
|   IN UINT16                           QuestionIdStart,
 | |
|   IN UINT16                           GotoForm,
 | |
|   IN UINT16                           GotoAlternateForm,
 | |
|   IN STRING_REF                       DisplayTokenStart,
 | |
|   IN STRING_REF                       HelpTokenStart,
 | |
|   IN UINT16                           KeyValueStart
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| UpdateBootAddPage (
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| UpdateBootDelPage (
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| UpdateDrvAddFilePage (
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| UpdateDrvAddHandlePage (
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| UpdateDrvDelPage (
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| UpdateDriverAddHandleDescPage (
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| UpdateBootTimeOut (
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| UpdateConInPage (
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| UpdateConOutPage (
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| UpdateStdErrPage (
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| UpdatePageBody (
 | |
|   IN UINT16                           UpdatePageId,
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| UpdateCOM1Page (
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| UpdateCOM2Page (
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| UpdateBootOrderPage (
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| UpdateDriverOrderPage (
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| UpdateBootNextPage (
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| UpdateTimeOutPage (
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| UpdateTerminalPage (
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| UpdateConCOMPage (
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| UpdateSetLegacyDeviceOrderPage (
 | |
|   IN UINT16                           UpdatePageId,
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData
 | |
| );
 | |
| 
 | |
| EFI_STATUS
 | |
| BootLegacy (
 | |
|   IN  UINT16  BbsType,
 | |
|   IN  UINT16  BbsFlag
 | |
| );
 | |
| 
 | |
| BM_MENU_ENTRY                     *
 | |
| GetCurrentTerminal (
 | |
|   UINTN       TerminalNumber
 | |
| );
 | |
| 
 | |
| EFI_FILE_HANDLE
 | |
| EfiLibOpenRoot (
 | |
|   IN EFI_HANDLE       DeviceHandle
 | |
|   );
 | |
| 
 | |
| EFI_FILE_SYSTEM_VOLUME_LABEL_INFO *
 | |
| EfiLibFileSystemVolumeLabelInfo (
 | |
|   IN EFI_FILE_HANDLE      FHand
 | |
|   );
 | |
| 
 | |
| EFI_FILE_INFO                     *
 | |
| EfiLibFileInfo (
 | |
|   IN EFI_FILE_HANDLE      FHand
 | |
|   );
 | |
| 
 | |
| CHAR16                            *
 | |
| DevicePathToStr (
 | |
|   EFI_DEVICE_PATH_PROTOCOL     *DevPath
 | |
|   );
 | |
| 
 | |
| EFI_STATUS
 | |
| EfiLibLocateProtocol (
 | |
|   IN  EFI_GUID        *ProtocolGuid,
 | |
|   OUT VOID            **Interface
 | |
|   );
 | |
| 
 | |
| VOID                              *
 | |
| EfiReallocatePool (
 | |
|   IN VOID                 *OldPool,
 | |
|   IN UINTN                OldSize,
 | |
|   IN UINTN                NewSize
 | |
|   );
 | |
| 
 | |
| CHAR16                            *
 | |
| DevicePathToStr (
 | |
|   EFI_DEVICE_PATH_PROTOCOL     *DevPath
 | |
|   );
 | |
| 
 | |
| VOID                              *
 | |
| BdsLibGetVariableAndSize (
 | |
|   IN CHAR16               *Name,
 | |
|   IN EFI_GUID             *VendorGuid,
 | |
|   OUT UINTN               *VarSize
 | |
|   );
 | |
| 
 | |
| EFI_STATUS
 | |
| EfiLibDeleteVariable (
 | |
|   IN CHAR16   *VarName,
 | |
|   IN EFI_GUID *VarGuid
 | |
|   );
 | |
| 
 | |
| CHAR16                            *
 | |
| EfiStrDuplicate (
 | |
|   IN CHAR16   *Src
 | |
|   );
 | |
| 
 | |
| BOOLEAN
 | |
| EfiLibMatchDevicePaths (
 | |
|   IN  EFI_DEVICE_PATH_PROTOCOL *Multi,
 | |
|   IN  EFI_DEVICE_PATH_PROTOCOL *Single
 | |
|   );
 | |
| 
 | |
| UINTN
 | |
| EfiDevicePathInstanceCount (
 | |
|   IN EFI_DEVICE_PATH_PROTOCOL      *DevicePath
 | |
|   );
 | |
| 
 | |
| EFI_STATUS
 | |
| CreateMenuStringToken (
 | |
|   IN BMM_CALLBACK_DATA                *CallbackData,
 | |
|   IN EFI_HII_HANDLE                   HiiHandle,
 | |
|   IN BM_MENU_OPTION                   *MenuOption
 | |
|   );
 | |
| 
 | |
| UINT16                            *
 | |
| EfiLibStrFromDatahub (
 | |
|   IN EFI_DEVICE_PATH_PROTOCOL                 *DevPath
 | |
|   );
 | |
| 
 | |
| VOID                              *
 | |
| GetLegacyBootOptionVar (
 | |
|   IN  UINTN                            DeviceType,
 | |
|   OUT UINTN                            *OptionIndex,
 | |
|   OUT UINTN                            *OptionSize
 | |
|  );
 | |
| 
 | |
| EFI_STATUS
 | |
| InitializeBM (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| EFI_STATUS
 | |
| BdsStartBootMaint (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| InitializeStringDepository ();
 | |
| 
 | |
| STRING_REF
 | |
| GetStringTokenFromDepository (
 | |
|   IN   BMM_CALLBACK_DATA     *CallbackData,
 | |
|   IN   STRING_DEPOSITORY     *StringDepository
 | |
|   ) ;
 | |
| 
 | |
| VOID
 | |
| ReclaimStringDepository (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| CleanUpStringDepository (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| EFI_STATUS
 | |
| ApplyChangeHandler (
 | |
|   IN  BMM_CALLBACK_DATA               *Private,
 | |
|   IN  BMM_FAKE_NV_DATA                *CurrentFakeNVMap,
 | |
|   IN  FORM_ID                         FormId
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| DiscardChangeHandler (
 | |
|   IN  BMM_CALLBACK_DATA               *Private,
 | |
|   IN  BMM_FAKE_NV_DATA                *CurrentFakeNVMap
 | |
|   );
 | |
| 
 | |
| VOID
 | |
| UpdatePageId (
 | |
|   BMM_CALLBACK_DATA              *Private,
 | |
|   UINT16                         NewPageId
 | |
|   );
 | |
| 
 | |
| EFI_STATUS
 | |
| BootThisFile (
 | |
|   IN BM_FILE_CONTEXT                   *FileContext
 | |
|   );
 | |
| 
 | |
| BOOLEAN
 | |
| UpdateFileExplorer (
 | |
|   IN BMM_CALLBACK_DATA            *CallbackData,
 | |
|   IN UINT16                       KeyValue
 | |
|   );
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| FileExplorerCallback (
 | |
|   IN EFI_FORM_CALLBACK_PROTOCOL       *This,
 | |
|   IN UINT16                           KeyValue,
 | |
|   IN EFI_IFR_DATA_ARRAY               *Data,
 | |
|   OUT EFI_HII_CALLBACK_PACKET         **Packet
 | |
|   );
 | |
| 
 | |
| EFI_STATUS
 | |
| FormSetDispatcher (
 | |
|   IN  BMM_CALLBACK_DATA    *CallbackData
 | |
|   );
 | |
| 
 | |
| VOID CreateCallbackPacket (
 | |
|   OUT EFI_HII_CALLBACK_PACKET         **Packet,
 | |
|   IN  UINT16                          Flags
 | |
|   );
 | |
| 
 | |
| //
 | |
| // Global variable in this program (defined in data.c)
 | |
| //
 | |
| extern BM_MENU_OPTION             BootOptionMenu;
 | |
| extern BM_MENU_OPTION             DriverOptionMenu;
 | |
| extern BM_MENU_OPTION             FsOptionMenu;
 | |
| extern BM_MENU_OPTION             ConsoleInpMenu;
 | |
| extern BM_MENU_OPTION             ConsoleOutMenu;
 | |
| extern BM_MENU_OPTION             ConsoleErrMenu;
 | |
| extern BM_MENU_OPTION             DirectoryMenu;
 | |
| extern BM_MENU_OPTION             DriverMenu;
 | |
| extern BM_MENU_OPTION             TerminalMenu;
 | |
| extern BM_MENU_OPTION             LegacyFDMenu;
 | |
| extern BM_MENU_OPTION             LegacyHDMenu;
 | |
| extern BM_MENU_OPTION             LegacyCDMenu;
 | |
| extern BM_MENU_OPTION             LegacyNETMenu;
 | |
| extern BM_MENU_OPTION             LegacyBEVMenu;
 | |
| extern UINT16                     TerminalType[];
 | |
| extern COM_ATTR                   BaudRateList[19];
 | |
| extern COM_ATTR                   DataBitsList[4];
 | |
| extern COM_ATTR                   ParityList[5];
 | |
| extern COM_ATTR                   StopBitsList[3];
 | |
| extern EFI_GUID                   Guid[4];
 | |
| extern EFI_HII_UPDATE_DATA        *UpdateData;
 | |
| extern STRING_DEPOSITORY          *FileOptionStrDepository;
 | |
| extern STRING_DEPOSITORY          *ConsoleOptionStrDepository;
 | |
| extern STRING_DEPOSITORY          *BootOptionStrDepository;
 | |
| extern STRING_DEPOSITORY          *BootOptionHelpStrDepository;
 | |
| extern STRING_DEPOSITORY          *DriverOptionStrDepository;
 | |
| extern STRING_DEPOSITORY          *DriverOptionHelpStrDepository;
 | |
| extern STRING_DEPOSITORY          *TerminalStrDepository;
 | |
| extern EFI_DEVICE_PATH_PROTOCOL   EndDevicePath[];
 | |
| extern EFI_GUID                   EfiLegacyDevOrderGuid;
 | |
| 
 | |
| #endif
 |