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 + -
显示快捷键?