2 Header file for boot maintenance module.
4 Copyright (c) 2004 - 2008, Intel Corporation. <BR>
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
19 #include "BBSsupport.h"
21 #include "FrontPage.h"
24 // Constants which are variable names used to access variables
26 #define VarLegacyDevOrder L"LegacyDevOrder"
28 #define VarConOutMode L"ConOutMode"
31 // Guid of a NV Variable which store the information about the
32 // FD/HD/CD/NET/BEV order
34 #define EFI_LEGACY_DEV_ORDER_VARIABLE_GUID \
36 0xa56074db, 0x65fe, 0x45f7, {0xbd, 0x21, 0x2d, 0x2b, 0xdd, 0x8e, 0x96, 0x52} \
42 #define StrFloppy L"Floppy Drive #%02x"
43 #define StrHardDisk L"HardDisk Drive #%02x"
44 #define StrCDROM L"ATAPI CDROM Drive #%02x"
45 #define StrNET L"NET Drive #%02x"
46 #define StrBEV L"BEV Drive #%02x"
47 #define StrFloppyHelp L"Select Floppy Drive #%02x"
48 #define StrHardDiskHelp L"Select HardDisk Drive #%02x"
49 #define StrCDROMHelp L"Select ATAPI CDROM Drive #%02x"
50 #define StrNETHelp L"NET Drive #%02x"
51 #define StrBEVHelp L"BEV Drive #%02x"
54 // Variable created with this flag will be "Efi:...."
56 #define VAR_FLAG EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE
59 // Define Maxmim characters that will be accepted
62 #define MAX_CHAR_SIZE (MAX_CHAR * 2)
65 // Check to see if current build support option active feature of
68 #ifndef LOAD_OPTION_ACTIVE
69 #define LOAD_OPTION_ACTIVE 0x00000001
73 // Check to see if current build support force reconnect feature of
76 #ifndef LOAD_OPTION_FORCE_RECONNECT
77 #define LOAD_OPTION_FORCE_RECONNECT 0x00000002
80 extern EFI_GUID mBootMaintGuid
;
81 extern EFI_GUID mFileExplorerGuid
;
84 // These are the VFR compiler generated data representing our VFR data.
90 // Below are the number of options in Baudrate, Databits,
91 // Parity and Stopbits selection for serial ports.
93 #define BM_COM_ATTR_BUADRATE 19
94 #define BM_COM_ATTR_DATABITS 4
95 #define BM_COM_ATTR_PARITY 5
96 #define BM_COM_ATTR_STOPBITS 3
99 // Callback function helper
101 #define BMM_CALLBACK_DATA_SIGNATURE EFI_SIGNATURE_32 ('C', 'b', 'c', 'k')
102 #define BMM_CALLBACK_DATA_FROM_THIS(a) CR (a, BMM_CALLBACK_DATA, BmmConfigAccess, BMM_CALLBACK_DATA_SIGNATURE)
104 #define FE_CALLBACK_DATA_FROM_THIS(a) CR (a, BMM_CALLBACK_DATA, FeConfigAccess, BMM_CALLBACK_DATA_SIGNATURE)
107 // Enumeration type definition
109 typedef UINT8 BBS_TYPE
;
144 } TYPE_OF_UPATE_MANNER
;
148 BOOT_FROM_FILE_STATE
,
149 ADD_BOOT_OPTION_STATE
,
150 ADD_DRIVER_OPTION_STATE
,
152 } FILE_EXPLORER_STATE
;
158 } FILE_EXPLORER_DISPLAY_CONTEXT
;
161 // All of the signatures that will be used in list structure
163 #define BM_MENU_OPTION_SIGNATURE EFI_SIGNATURE_32 ('m', 'e', 'n', 'u')
164 #define BM_LOAD_OPTION_SIGNATURE EFI_SIGNATURE_32 ('l', 'o', 'a', 'd')
165 #define BM_CONSOLE_OPTION_SIGNATURE EFI_SIGNATURE_32 ('c', 'n', 's', 'l')
166 #define BM_FILE_OPTION_SIGNATURE EFI_SIGNATURE_32 ('f', 'i', 'l', 'e')
167 #define BM_HANDLE_OPTION_SIGNATURE EFI_SIGNATURE_32 ('h', 'n', 'd', 'l')
168 #define BM_TERMINAL_OPTION_SIGNATURE EFI_SIGNATURE_32 ('t', 'r', 'm', 'l')
169 #define BM_MENU_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('e', 'n', 't', 'r')
171 #define BM_LOAD_CONTEXT_SELECT 0x0
172 #define BM_CONSOLE_CONTEXT_SELECT 0x1
173 #define BM_FILE_CONTEXT_SELECT 0x2
174 #define BM_HANDLE_CONTEXT_SELECT 0x3
175 #define BM_TERMINAL_CONTEXT_SELECT 0x5
177 #define BM_CONSOLE_IN_CONTEXT_SELECT 0x6
178 #define BM_CONSOLE_OUT_CONTEXT_SELECT 0x7
179 #define BM_CONSOLE_ERR_CONTEXT_SELECT 0x8
180 #define BM_LEGACY_DEV_CONTEXT_SELECT 0x9
183 // Buffer size for update data
185 #define UPDATE_DATA_SIZE 0x100000
188 // Namespace of callback keys used in display and file system navigation
190 #define MAX_BBS_OFFSET 0xE000
191 #define NET_OPTION_OFFSET 0xD800
192 #define BEV_OPTION_OFFSET 0xD000
193 #define FD_OPTION_OFFSET 0xC000
194 #define HD_OPTION_OFFSET 0xB000
195 #define CD_OPTION_OFFSET 0xA000
196 #define FILE_OPTION_OFFSET 0x8000
197 #define FILE_OPTION_MASK 0x7FFF
198 #define HANDLE_OPTION_OFFSET 0x7000
199 #define CONSOLE_OPTION_OFFSET 0x6000
200 #define TERMINAL_OPTION_OFFSET 0x5000
201 #define CONFIG_OPTION_OFFSET 0x1200
202 #define KEY_VALUE_OFFSET 0x1100
203 #define FORM_ID_OFFSET 0x1000
206 // VarOffset that will be used to create question
207 // all these values are computed from the structure
210 #define VAR_OFFSET(Field) ((UINT16) ((UINTN) &(((BMM_FAKE_NV_DATA *) 0)->Field)))
213 // Question Id of Zero is invalid, so add an offset to it
215 #define QUESTION_ID(Field) (VAR_OFFSET (Field) + CONFIG_OPTION_OFFSET)
217 #define BOOT_TIME_OUT_VAR_OFFSET VAR_OFFSET (BootTimeOut)
218 #define BOOT_NEXT_VAR_OFFSET VAR_OFFSET (BootNext)
219 #define COM1_BAUD_RATE_VAR_OFFSET VAR_OFFSET (COM1BaudRate)
220 #define COM1_DATA_RATE_VAR_OFFSET VAR_OFFSET (COM1DataRate)
221 #define COM1_STOP_BITS_VAR_OFFSET VAR_OFFSET (COM1StopBits)
222 #define COM1_PARITY_VAR_OFFSET VAR_OFFSET (COM1Parity)
223 #define COM1_TERMINAL_VAR_OFFSET VAR_OFFSET (COM2TerminalType)
224 #define COM2_BAUD_RATE_VAR_OFFSET VAR_OFFSET (COM2BaudRate)
225 #define COM2_DATA_RATE_VAR_OFFSET VAR_OFFSET (COM2DataRate)
226 #define COM2_STOP_BITS_VAR_OFFSET VAR_OFFSET (COM2StopBits)
227 #define COM2_PARITY_VAR_OFFSET VAR_OFFSET (COM2Parity)
228 #define COM2_TERMINAL_VAR_OFFSET VAR_OFFSET (COM2TerminalType)
229 #define DRV_ADD_HANDLE_DESC_VAR_OFFSET VAR_OFFSET (DriverAddHandleDesc)
230 #define DRV_ADD_ACTIVE_VAR_OFFSET VAR_OFFSET (DriverAddActive)
231 #define DRV_ADD_RECON_VAR_OFFSET VAR_OFFSET (DriverAddForceReconnect)
232 #define CON_IN_COM1_VAR_OFFSET VAR_OFFSET (ConsoleInputCOM1)
233 #define CON_IN_COM2_VAR_OFFSET VAR_OFFSET (ConsoleInputCOM2)
234 #define CON_OUT_COM1_VAR_OFFSET VAR_OFFSET (ConsoleOutputCOM1)
235 #define CON_OUT_COM2_VAR_OFFSET VAR_OFFSET (ConsoleOutputCOM2)
236 #define CON_ERR_COM1_VAR_OFFSET VAR_OFFSET (ConsoleErrorCOM1)
237 #define CON_ERR_COM2_VAR_OFFSET VAR_OFFSET (ConsoleErrorCOM2)
238 #define CON_MODE_VAR_OFFSET VAR_OFFSET (ConsoleOutMode)
239 #define CON_DEVICE_VAR_OFFSET VAR_OFFSET (ConsoleCheck)
240 #define OPTION_ORDER_VAR_OFFSET VAR_OFFSET (OptionOrder)
241 #define DRIVER_OPTION_ORDER_VAR_OFFSET VAR_OFFSET (DriverOptionToBeDeleted)
242 #define BOOT_OPTION_DEL_VAR_OFFSET VAR_OFFSET (BootOptionDel)
243 #define DRIVER_OPTION_DEL_VAR_OFFSET VAR_OFFSET (DriverOptionDel)
244 #define DRIVER_ADD_OPTION_VAR_OFFSET VAR_OFFSET (DriverAddHandleOptionalData)
245 #define COM_BAUD_RATE_VAR_OFFSET VAR_OFFSET (COMBaudRate)
246 #define COM_DATA_RATE_VAR_OFFSET VAR_OFFSET (COMDataRate)
247 #define COM_STOP_BITS_VAR_OFFSET VAR_OFFSET (COMStopBits)
248 #define COM_PARITY_VAR_OFFSET VAR_OFFSET (COMParity)
249 #define COM_TERMINAL_VAR_OFFSET VAR_OFFSET (COMTerminalType)
250 #define LEGACY_FD_VAR_OFFSET VAR_OFFSET (LegacyFD)
251 #define LEGACY_HD_VAR_OFFSET VAR_OFFSET (LegacyHD)
252 #define LEGACY_CD_VAR_OFFSET VAR_OFFSET (LegacyCD)
253 #define LEGACY_NET_VAR_OFFSET VAR_OFFSET (LegacyNET)
254 #define LEGACY_BEV_VAR_OFFSET VAR_OFFSET (LegacyBEV)
256 #define BOOT_TIME_OUT_QUESTION_ID QUESTION_ID (BootTimeOut)
257 #define BOOT_NEXT_QUESTION_ID QUESTION_ID (BootNext)
258 #define COM1_BAUD_RATE_QUESTION_ID QUESTION_ID (COM1BaudRate)
259 #define COM1_DATA_RATE_QUESTION_ID QUESTION_ID (COM1DataRate)
260 #define COM1_STOP_BITS_QUESTION_ID QUESTION_ID (COM1StopBits)
261 #define COM1_PARITY_QUESTION_ID QUESTION_ID (COM1Parity)
262 #define COM1_TERMINAL_QUESTION_ID QUESTION_ID (COM2TerminalType)
263 #define COM2_BAUD_RATE_QUESTION_ID QUESTION_ID (COM2BaudRate)
264 #define COM2_DATA_RATE_QUESTION_ID QUESTION_ID (COM2DataRate)
265 #define COM2_STOP_BITS_QUESTION_ID QUESTION_ID (COM2StopBits)
266 #define COM2_PARITY_QUESTION_ID QUESTION_ID (COM2Parity)
267 #define COM2_TERMINAL_QUESTION_ID QUESTION_ID (COM2TerminalType)
268 #define DRV_ADD_HANDLE_DESC_QUESTION_ID QUESTION_ID (DriverAddHandleDesc)
269 #define DRV_ADD_ACTIVE_QUESTION_ID QUESTION_ID (DriverAddActive)
270 #define DRV_ADD_RECON_QUESTION_ID QUESTION_ID (DriverAddForceReconnect)
271 #define CON_IN_COM1_QUESTION_ID QUESTION_ID (ConsoleInputCOM1)
272 #define CON_IN_COM2_QUESTION_ID QUESTION_ID (ConsoleInputCOM2)
273 #define CON_OUT_COM1_QUESTION_ID QUESTION_ID (ConsoleOutputCOM1)
274 #define CON_OUT_COM2_QUESTION_ID QUESTION_ID (ConsoleOutputCOM2)
275 #define CON_ERR_COM1_QUESTION_ID QUESTION_ID (ConsoleErrorCOM1)
276 #define CON_ERR_COM2_QUESTION_ID QUESTION_ID (ConsoleErrorCOM2)
277 #define CON_MODE_QUESTION_ID QUESTION_ID (ConsoleOutMode)
278 #define CON_DEVICE_QUESTION_ID QUESTION_ID (ConsoleCheck)
279 #define OPTION_ORDER_QUESTION_ID QUESTION_ID (OptionOrder)
280 #define DRIVER_OPTION_ORDER_QUESTION_ID QUESTION_ID (DriverOptionToBeDeleted)
281 #define BOOT_OPTION_DEL_QUESTION_ID QUESTION_ID (BootOptionDel)
282 #define DRIVER_OPTION_DEL_QUESTION_ID QUESTION_ID (DriverOptionDel)
283 #define DRIVER_ADD_OPTION_QUESTION_ID QUESTION_ID (DriverAddHandleOptionalData)
284 #define COM_BAUD_RATE_QUESTION_ID QUESTION_ID (COMBaudRate)
285 #define COM_DATA_RATE_QUESTION_ID QUESTION_ID (COMDataRate)
286 #define COM_STOP_BITS_QUESTION_ID QUESTION_ID (COMStopBits)
287 #define COM_PARITY_QUESTION_ID QUESTION_ID (COMParity)
288 #define COM_TERMINAL_QUESTION_ID QUESTION_ID (COMTerminalType)
289 #define LEGACY_FD_QUESTION_ID QUESTION_ID (LegacyFD)
290 #define LEGACY_HD_QUESTION_ID QUESTION_ID (LegacyHD)
291 #define LEGACY_CD_QUESTION_ID QUESTION_ID (LegacyCD)
292 #define LEGACY_NET_QUESTION_ID QUESTION_ID (LegacyNET)
293 #define LEGACY_BEV_QUESTION_ID QUESTION_ID (LegacyBEV)
295 #define STRING_DEPOSITORY_NUMBER 8
300 // Serial Ports attributes, first one is the value for
301 // return from callback function, stringtoken is used to
302 // display the value properly
313 // Length = sizeof (UINT16) + SIZEOF (Data)
317 } BM_LEGACY_DEV_ORDER_CONTEXT
;
336 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
337 } BM_TERMINAL_CONTEXT
;
341 BOOLEAN LoadOptionModified
;
346 BOOLEAN ForceReconnect
;
347 UINTN OptionalDataSize
;
349 UINTN LoadOptionSize
;
353 UINT16 FilePathListLength
;
355 EFI_DEVICE_PATH_PROTOCOL
*FilePathList
;
366 } BM_LEGACY_DEVICE_CONTEXT
;
374 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
375 } BM_CONSOLE_CONTEXT
;
384 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
385 EFI_FILE_HANDLE FHandle
;
387 EFI_FILE_SYSTEM_VOLUME_LABEL_INFO
*Info
;
391 BOOLEAN IsRemovableMedia
;
393 BOOLEAN IsBootLegacy
;
398 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
411 UINT16
*DisplayString
;
413 EFI_STRING_ID DisplayStringToken
;
414 EFI_STRING_ID HelpStringToken
;
415 UINTN ContextSelection
;
416 VOID
*VariableContext
;
421 // Shared callback data.
425 BM_MENU_ENTRY
*MenuEntry
;
426 BM_HANDLE_CONTEXT
*HandleContext
;
427 BM_FILE_CONTEXT
*FileContext
;
428 BM_LOAD_CONTEXT
*LoadContext
;
429 BM_TERMINAL_CONTEXT
*TerminalContext
;
430 UINTN CurrentTerminal
;
434 // BMM main formset callback data.
436 EFI_HII_HANDLE BmmHiiHandle
;
437 EFI_HANDLE BmmDriverHandle
;
438 EFI_HII_CONFIG_ACCESS_PROTOCOL BmmConfigAccess
;
439 EFI_FORM_ID BmmCurrentPageId
;
440 EFI_FORM_ID BmmPreviousPageId
;
441 BOOLEAN BmmAskSaveOrNot
;
442 BMM_FAKE_NV_DATA BmmFakeNvData
;
443 BMM_FAKE_NV_DATA BmmOldFakeNVData
;
446 // File explorer formset callback data.
448 EFI_HII_HANDLE FeHiiHandle
;
449 EFI_HANDLE FeDriverHandle
;
450 EFI_HII_CONFIG_ACCESS_PROTOCOL FeConfigAccess
;
451 FILE_EXPLORER_STATE FeCurrentState
;
452 FILE_EXPLORER_DISPLAY_CONTEXT FeDisplayContext
;
453 FILE_EXPLORER_NV_DATA FeFakeNvData
;
456 typedef struct _STRING_LIST_NODE
{
457 EFI_STRING_ID StringToken
;
458 struct _STRING_LIST_NODE
*Next
;
461 typedef struct _STRING_DEPOSITORY
{
462 UINTN TotalNodeNumber
;
463 STRING_LIST_NODE
*CurrentNode
;
464 STRING_LIST_NODE
*ListHead
;
470 // For initializing File System menu
473 BOpt_FindFileSystem (
474 IN BMM_CALLBACK_DATA
*CallbackData
479 // For cleaning up File System menu
482 BOpt_FreeFileSystem (
488 // For initializing File Navigation menu
492 IN BMM_CALLBACK_DATA
*CallbackData
,
493 IN BM_MENU_ENTRY
*MenuEntry
498 // For cleaning up File Navigation menu
507 // For Initializing handle navigation menu
516 // For Cleaning up handle navigation menu
519 BOpt_FreeDrivers(VOID
);
522 // For initializing Boot Option menu
525 BOpt_GetBootOptions (
526 IN BMM_CALLBACK_DATA
*CallbackData
530 // For Initializing Driver option menu
533 BOpt_GetDriverOptions (
534 IN BMM_CALLBACK_DATA
*CallbackData
538 // For Cleaning up boot option menu
541 BOpt_FreeBootOptions (VOID
);
544 // For cleaning up driver option menu
547 BOpt_FreeDriverOptions(VOID
);
550 // For Initializing HD/FD/CD/NET/BEV option menu
553 BOpt_GetLegacyOptions(VOID
);
556 // For cleaning up driver option menu
559 BOpt_FreeLegacyOptions(VOID
);
562 // this function is used to take place of all other free menu actions
566 BM_MENU_OPTION
*FreeMenu
571 // Following are the helper functions used
574 BOpt_AppendFileName (
580 BOpt_IsEfiImageName (
586 IN EFI_FILE_HANDLE Dir
,
591 // Get current unused boot option number
594 BOpt_GetBootOptionNumber (VOID
);
597 // Get current unused driver option number
600 BOpt_GetDriverOptionNumber (VOID
);
603 BOpt_CreateMenuEntry (
608 BOpt_DestroyMenuEntry (
609 BM_MENU_ENTRY
*MenuEntry
614 BM_MENU_OPTION
*MenuOption
,
619 // a helper function used to free pool type memory
627 // Locate all serial io devices for console
630 LocateSerialIo (VOID
);
633 // Initializing Console menu
636 GetAllConsoles(VOID
);
639 // Get current mode information
643 IN BMM_CALLBACK_DATA
*CallbackData
647 // Cleaning up console menu
650 FreeAllConsoles(VOID
);
653 ChangeVariableDevicePath (
654 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
658 ChangeTerminalDevicePath (
659 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
,
660 BOOLEAN ChangeTerminal
663 // Variable operation by menu selection
666 Var_UpdateBootOption (
667 IN BMM_CALLBACK_DATA
*CallbackData
,
668 IN FILE_EXPLORER_NV_DATA
*NvRamMap
672 Var_DelBootOption (VOID
);
675 Var_ChangeBootOrder (VOID
);
678 Var_UpdateDriverOption (
679 IN BMM_CALLBACK_DATA
*CallbackData
,
680 IN EFI_HII_HANDLE HiiHandle
,
681 IN UINT16
*DescriptionData
,
682 IN UINT16
*OptionalData
,
683 IN UINT8 ForceReconnect
687 Var_DelDriverOption (VOID
);
690 Var_ChangeDriverOrder (VOID
);
693 Var_UpdateConsoleInpOption (VOID
);
696 Var_UpdateConsoleOutOption (VOID
);
699 Var_UpdateErrorOutOption (VOID
);
702 Var_UpdateAllConsoleOption (VOID
);
706 IN BMM_CALLBACK_DATA
*CallbackData
710 Var_UpdateBootOrder (
711 IN BMM_CALLBACK_DATA
*CallbackData
715 Var_UpdateDriverOrder (
716 IN BMM_CALLBACK_DATA
*CallbackData
720 Var_UpdateBBSOption (
721 IN BMM_CALLBACK_DATA
*CallbackData
726 IN BMM_CALLBACK_DATA
*CallbackData
730 // Following are page create and refresh functions
740 IN BMM_CALLBACK_DATA
*CallbackData
745 IN BMM_CALLBACK_DATA
*CallbackData
,
746 IN BM_MENU_OPTION
*UpdatingMenu
,
747 IN UINT16 UpdatingPage
,
748 IN UINT16 UpdatingManner
,
749 IN UINT16 QuestionIdStart
,
751 IN UINT16 GotoAlternateForm
,
752 IN EFI_STRING_ID DisplayTokenStart
,
753 IN EFI_STRING_ID HelpTokenStart
,
754 IN UINT16 KeyValueStart
759 IN BMM_CALLBACK_DATA
*CallbackData
764 IN BMM_CALLBACK_DATA
*CallbackData
768 UpdateDrvAddFilePage (
769 IN BMM_CALLBACK_DATA
*CallbackData
773 UpdateDrvAddHandlePage (
774 IN BMM_CALLBACK_DATA
*CallbackData
779 IN BMM_CALLBACK_DATA
*CallbackData
783 UpdateDriverAddHandleDescPage (
784 IN BMM_CALLBACK_DATA
*CallbackData
789 IN BMM_CALLBACK_DATA
*CallbackData
794 IN BMM_CALLBACK_DATA
*CallbackData
799 IN BMM_CALLBACK_DATA
*CallbackData
804 IN BMM_CALLBACK_DATA
*CallbackData
809 IN UINT16 UpdatePageId
,
810 IN BMM_CALLBACK_DATA
*CallbackData
815 IN BMM_CALLBACK_DATA
*CallbackData
820 IN BMM_CALLBACK_DATA
*CallbackData
824 UpdateBootOrderPage (
825 IN BMM_CALLBACK_DATA
*CallbackData
829 UpdateDriverOrderPage (
830 IN BMM_CALLBACK_DATA
*CallbackData
835 IN BMM_CALLBACK_DATA
*CallbackData
840 IN BMM_CALLBACK_DATA
*CallbackData
845 IN BMM_CALLBACK_DATA
*CallbackData
850 IN BMM_CALLBACK_DATA
*CallbackData
855 IN BMM_CALLBACK_DATA
*CallbackData
859 UpdateSetLegacyDeviceOrderPage (
860 IN UINT16 UpdatePageId
,
861 IN BMM_CALLBACK_DATA
*CallbackData
877 IN EFI_HANDLE DeviceHandle
880 EFI_FILE_SYSTEM_VOLUME_LABEL_INFO
*
881 EfiLibFileSystemVolumeLabelInfo (
882 IN EFI_FILE_HANDLE FHand
887 IN EFI_FILE_HANDLE FHand
899 EFI_DEVICE_PATH_PROTOCOL
*DevPath
903 EfiAllocateZeroPool (
908 EfiLibLocateProtocol (
909 IN EFI_GUID
*ProtocolGuid
,
922 EFI_DEVICE_PATH_PROTOCOL
*DevPath
926 BdsLibGetVariableAndSize (
928 IN EFI_GUID
*VendorGuid
,
933 EfiLibDeleteVariable (
944 EfiLibMatchDevicePaths (
945 IN EFI_DEVICE_PATH_PROTOCOL
*Multi
,
946 IN EFI_DEVICE_PATH_PROTOCOL
*Single
950 EfiDevicePathInstanceCount (
951 IN EFI_DEVICE_PATH_PROTOCOL
*DevicePath
955 CreateMenuStringToken (
956 IN BMM_CALLBACK_DATA
*CallbackData
,
957 IN EFI_HII_HANDLE HiiHandle
,
958 IN BM_MENU_OPTION
*MenuOption
962 EfiLibStrFromDatahub (
963 IN EFI_DEVICE_PATH_PROTOCOL
*DevPath
967 GetLegacyBootOptionVar (
969 OUT UINTN
*OptionIndex
,
970 OUT UINTN
*OptionSize
984 InitializeStringDepository (VOID
);
987 GetStringTokenFromDepository (
988 IN BMM_CALLBACK_DATA
*CallbackData
,
989 IN STRING_DEPOSITORY
*StringDepository
993 ReclaimStringDepository (
998 CleanUpStringDepository (
1003 ApplyChangeHandler (
1004 IN BMM_CALLBACK_DATA
*Private
,
1005 IN BMM_FAKE_NV_DATA
*CurrentFakeNVMap
,
1006 IN EFI_FORM_ID FormId
1010 DiscardChangeHandler (
1011 IN BMM_CALLBACK_DATA
*Private
,
1012 IN BMM_FAKE_NV_DATA
*CurrentFakeNVMap
1017 BMM_CALLBACK_DATA
*Private
,
1023 IN BM_FILE_CONTEXT
*FileContext
1027 UpdateFileExplorer (
1028 IN BMM_CALLBACK_DATA
*CallbackData
,
1034 FileExplorerCallback (
1035 IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL
*This
,
1036 IN EFI_BROWSER_ACTION Action
,
1037 IN EFI_QUESTION_ID QuestionId
,
1039 IN EFI_IFR_TYPE_VALUE
*Value
,
1040 OUT EFI_BROWSER_ACTION_REQUEST
*ActionRequest
1045 IN BMM_CALLBACK_DATA
*CallbackData
1051 IN EFI_GUID
*VendorGuid
1055 // Global variable in this program (defined in data.c)
1057 extern BM_MENU_OPTION BootOptionMenu
;
1058 extern BM_MENU_OPTION DriverOptionMenu
;
1059 extern BM_MENU_OPTION FsOptionMenu
;
1060 extern BM_MENU_OPTION ConsoleInpMenu
;
1061 extern BM_MENU_OPTION ConsoleOutMenu
;
1062 extern BM_MENU_OPTION ConsoleErrMenu
;
1063 extern BM_MENU_OPTION DirectoryMenu
;
1064 extern BM_MENU_OPTION DriverMenu
;
1065 extern BM_MENU_OPTION TerminalMenu
;
1066 extern BM_MENU_OPTION LegacyFDMenu
;
1067 extern BM_MENU_OPTION LegacyHDMenu
;
1068 extern BM_MENU_OPTION LegacyCDMenu
;
1069 extern BM_MENU_OPTION LegacyNETMenu
;
1070 extern BM_MENU_OPTION LegacyBEVMenu
;
1071 extern UINT16 TerminalType
[];
1072 extern COM_ATTR BaudRateList
[19];
1073 extern COM_ATTR DataBitsList
[4];
1074 extern COM_ATTR ParityList
[5];
1075 extern COM_ATTR StopBitsList
[3];
1076 extern EFI_GUID Guid
[4];
1077 extern EFI_HII_UPDATE_DATA gUpdateData
;
1078 extern STRING_DEPOSITORY
*FileOptionStrDepository
;
1079 extern STRING_DEPOSITORY
*ConsoleOptionStrDepository
;
1080 extern STRING_DEPOSITORY
*BootOptionStrDepository
;
1081 extern STRING_DEPOSITORY
*BootOptionHelpStrDepository
;
1082 extern STRING_DEPOSITORY
*DriverOptionStrDepository
;
1083 extern STRING_DEPOSITORY
*DriverOptionHelpStrDepository
;
1084 extern STRING_DEPOSITORY
*TerminalStrDepository
;
1085 extern EFI_DEVICE_PATH_PROTOCOL EndDevicePath
[];
1086 extern EFI_GUID EfiLegacyDevOrderGuid
;