bootmaint.h
来自「EFI BIOS是Intel提出的下一代的BIOS标准。这里上传的Edk源代码是」· C头文件 代码 · 共 1,192 行 · 第 1/3 页
H
1,192 行
//
// 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;
EFI_LIST_ENTRY Head;
UINTN MenuNumber;
} BM_MENU_OPTION;
typedef struct {
UINTN Signature;
EFI_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
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?