alder_lake_bios/Insyde/InsydeModulePkg/Include/Guid/InsydeModuleHii.h

805 lines
26 KiB
C

/** @file
;******************************************************************************
;* Copyright (c) 2012 - 2020, Insyde Software Corp. All Rights Reserved.
;*
;* You may not reproduce, distribute, publish, display, perform, modify, adapt,
;* transmit, broadcast, present, recite, release, license or otherwise exploit
;* any part of this publication in any form, by any means, without the prior
;* written permission of Insyde Software Corporation.
;*
;******************************************************************************
*/
#ifndef _INSYDEMODULE_HII_H
#define _INSYDEMODULE_HII_H
#define H2O_BDS_LOAD_OPTION_FRONT_PAGE_GUID { 0xe0ba9b98, 0xdd2d, 0x4434, { 0xbb, 0x94, 0x59, 0x9c, 0xc9, 0xe4, 0x30, 0x5d } }
#define H2O_BDS_LOAD_OPTION_BOOT_MAINTENANCE_GUID { 0x1c54c333, 0x24ff, 0x4506, { 0xa9, 0xd6, 0x0a, 0x62, 0x4e, 0x09, 0xae, 0x7e } }
#define H2O_BDS_LOAD_OPTION_BOOT_MANAGER_GUID { 0x77e79a1e, 0xe1fb, 0x491f, { 0xa7, 0xc1, 0xfa, 0x1b, 0x54, 0x12, 0x53, 0x2a } }
#define H2O_BDS_LOAD_OPTION_DEVICE_MANAGER_GUID { 0x8f1c1ac6, 0xfbc0, 0x4dab, { 0xa8, 0xbe, 0xb4, 0x12, 0xa1, 0x3c, 0x8b, 0x45 } }
#define H2O_BDS_LOAD_OPTION_SECURE_BOOT_MANAGER_GUID { 0x7517821f, 0xd9e1, 0x44c1, { 0xa7, 0x5a, 0xd0, 0x54, 0xce, 0xf3, 0xf8, 0xf8 } }
#pragma pack(1)
typedef struct {
VENDOR_DEVICE_PATH VendorDevicePath;
EFI_DEVICE_PATH_PROTOCOL End;
} H2O_BDS_LOAD_OPTION_VENDOR_DEVICE_PATH;
#pragma pack()
///
/// GUIDed opcodes defined for H2O implementation.
///
#define H2O_IFR_EXT_GUID \
{ \
0x38237648, 0x09cc, 0x47c4, {0x8b, 0x5f, 0xb0, 0x9f, 0x06, 0x89, 0x0d, 0xf7} \
}
#pragma pack(1)
//
// For H2O_VALUE
//
#define H2O_VALUE_TYPE_UNDEFINED 0x0000
#define H2O_VALUE_TYPE_BOOLEAN 0x0001
#define H2O_VALUE_TYPE_UINT32 0x0002
#define H2O_VALUE_TYPE_INT32 0x0003
#define H2O_VALUE_TYPE_PERCENTAGE 0x0004
#define H2O_VALUE_TYPE_UINT8 0x0005
#define H2O_VALUE_TYPE_UINT16 0x0006
#define H2O_VALUE_TYPE_UINT64 0x0007
#define H2O_VALUE_TYPE_INT8 0x0008
#define H2O_VALUE_TYPE_INT16 0x0009
#define H2O_VALUE_TYPE_INT64 0x000A
#define H2O_VALUE_TYPE_STR16 0x000B
#define H2O_VALUE_TYPE_GUID 0x000C
#define H2O_VALUE_TYPE_STRID 0x000D
#define H2O_VALUE_TYPE_IMGID 0x000E
#define H2O_VALUE_TYPE_BUFFER 0x000F
#define H2O_VALUE_TYPE_DATE 0x0010
#define H2O_VALUE_TYPE_TIME 0x0011
#define H2O_VALUE_TYPE_STR8 0x0012
#define H2O_VALUE_TYPE_COLOR 0x0013
typedef struct {
UINT32 BufferSize;
UINT8 *Buffer;
} H2O_BUFFER;
typedef struct {
UINT16 Year;
UINT8 Month;
UINT8 Day;
} H2O_DATE;
typedef struct {
UINT8 Hour;
UINT8 Minute;
UINT8 Second;
} H2O_TIME;
typedef struct {
UINT32 Argb;
UINT8 TextModeAttribute;
} H2O_COLOR;
typedef union {
VOID *Ptr;
BOOLEAN Bool;
UINT8 Pct;
CHAR8 C8;
CHAR16 C16;
UINT8 U8;
UINT16 U16;
UINT32 U32;
UINT64 U64;
INT8 I8;
INT16 I16;
INT32 I32;
INT64 I64;
CHAR8 *Str8;
CHAR16 *Str16;
EFI_GUID Guid;
H2O_DATE Date;
H2O_TIME Time;
H2O_BUFFER Buffer;
H2O_COLOR Color;
} H2O_VALUE_TYPE_VALUE;
typedef struct {
UINT32 Type;
H2O_VALUE_TYPE_VALUE Value;
} H2O_VALUE;
///
/// H2O implementation extension opcodes, new extension can be added here later.
///
#define H2O_IFR_EXT_HOTKEY 0x0000
#define H2O_IFR_EXT_LAYOUT 0x0001
#define H2O_IFR_EXT_STYLE 0x0002
#define H2O_IFR_EXT_HELPIMAGE 0x0003
#define H2O_IFR_EXT_PROPERTY 0x0004
#define H2O_IFR_EXT_STYLE_REF 0x0005
#define H2O_IFR_EXT_TEXT 0x0006
#define H2O_IFR_EXT_LINK 0x0007
#define H2O_IFR_EXT_IMPORT 0x000A
#define H2O_IFR_EXT_EXT_FLAGS 0x000C
#define H2O_IFR_EXT_INCLUDE_FORM_SET 0x000D
#define H2O_IFR_EXT_EXCLUDE_FORM_SET 0x000E
#define H2O_IFR_EXT_PCD 0x000F
#define H2O_IFR_EXT_IMPORT_TARGET 0x0010
#define H2O_IFR_EXT_LINK_TARGET 0x0011
//
// PCD definitions
//
typedef struct _H2O_IFR_GUID_PCD {
EFI_IFR_OP_HEADER Header; // Standard IFR opcode header, where OpCode is EFI_IFR_GUID_OP.
EFI_GUID Guid; // The standard EFI_IFR_GUID header, where Guid is H2O_IFR_EXT_GUID.
UINT16 Function; // Enumerated value that specifies the extended opcode, where Function is H2O_IFR_EXT_PCD.
EFI_GUID PcdGuid; // GUID that, along with PcdTokenNumber, uniquely identifies the PCD.
UINT32 PcdTokenNumber; // Unsigned integer that, along with PcdGuid, uniquely identifies the PCD.
} H2O_IFR_GUID_PCD;
//
// Link definitions
//
typedef struct _H2O_IFR_GUID_LINK {
EFI_IFR_OP_HEADER Header;
///
/// H2O_IFR_EXT_GUID.
///
EFI_GUID Guid;
///
/// H2O_IFR_EXT_LINK
///
UINT16 Function;
} H2O_IFR_GUID_LINK;
///
/// HotKey opcode.
///
typedef struct _H2O_IFR_GUID_HOTKEY {
EFI_IFR_OP_HEADER Header;
///
/// H2O_IFR_EXT_GUID.
///
EFI_GUID Guid;
///
/// H2O_IFR_EXT_HOTKEY
///
UINT16 Function;
UINT8 HotKeyOffset;
} H2O_IFR_GUID_HOTKEY;
///
/// Layout opcode.
///
typedef struct _H2O_IFR_GUID_LAYOUT {
EFI_IFR_OP_HEADER Header;
///
/// H2O_IFR_EXT_GUID.
///
EFI_GUID Guid;
///
/// H2O_IFR_EXT_LAYOUT
///
UINT16 Function;
UINT16 LayoutId;
} H2O_IFR_GUID_LAYOUT;
///
/// Style opcode.
///
typedef struct _H2O_IFR_GUID_STYLE {
EFI_IFR_OP_HEADER Header;
///
/// H2O_IFR_EXT_GUID.
///
EFI_GUID Guid;
///
/// H2O_IFR_EXT_STYLE
///
UINT16 Function;
UINT8 Type;
UINT8 ClassNameOffset;
UINT8 PseudoClassOffset;
//CHAR8 Selector[1];
} H2O_IFR_GUID_STYLE;
///
/// Style type
///
#define H2O_IFR_STYLE_TYPE_LAYOUT 0x00
#define H2O_IFR_STYLE_TYPE_PANEL 0x01
#define H2O_IFR_STYLE_TYPE_FORM 0x02
#define H2O_IFR_STYLE_TYPE_FORMSET 0x03
#define H2O_IFR_STYLE_TYPE_ACTION 0x04
#define H2O_IFR_STYLE_TYPE_CHECKBOX 0x05
#define H2O_IFR_STYLE_TYPE_DATE 0x06
#define H2O_IFR_STYLE_TYPE_GOTO 0x07
#define H2O_IFR_STYLE_TYPE_ONEOF 0x08
#define H2O_IFR_STYLE_TYPE_NUMERIC 0x09
#define H2O_IFR_STYLE_TYPE_ORDEREDLIST 0x0a
#define H2O_IFR_STYLE_TYPE_PASSWORD 0x0b
#define H2O_IFR_STYLE_TYPE_STRING 0x0c
#define H2O_IFR_STYLE_TYPE_TIME 0x0d
#define H2O_IFR_STYLE_TYPE_TEXT 0x0e
#define H2O_IFR_STYLE_TYPE_SUBTITLE 0x0f
#define H2O_IFR_STYLE_TYPE_RESETBUTTON 0x10
#define H2O_IFR_STYLE_TYPE_BUTTON 0x11
#define H2O_IFR_STYLE_TYPE_HOTKEY 0x12
#define H2O_IFR_STYLE_TYPE_GROUP 0x13
#define H2O_IFR_STYLE_TYPE_SHEET 0xff
///
/// HelpImage opcode.
///
typedef struct _H2O_IFR_GUID_HELPIMAGE {
EFI_IFR_OP_HEADER Header;
///
/// H2O_IFR_EXT_GUID.
///
EFI_GUID Guid;
///
/// H2O_IFR_EXT_HELPIMAGE
///
UINT16 Function;
EFI_IMAGE_ID HelpImage;
} H2O_IFR_GUID_HELPIMAGE;
///
/// Property opcode.
///
typedef struct _H2O_IFR_GUID_PROPERTY {
EFI_IFR_OP_HEADER Header;
///
/// H2O_IFR_EXT_GUID.
///
EFI_GUID Guid;
///
/// H2O_IFR_EXT_PROPERTY
///
UINT16 Function;
UINT32 ValueType;
H2O_VALUE H2OValue;
UINT8 IdentifierOffset;
UINT8 ValueOffset;
//CHAR8 Property[1];
} H2O_IFR_GUID_PROPERTY;
///
/// Property value type
///
typedef enum {
H2O_PROPERTY_VALUE_TYPE_ANIMATION = 1,
H2O_PROPERTY_VALUE_TYPE_BOOLEAN,
H2O_PROPERTY_VALUE_TYPE_COLOR,
H2O_PROPERTY_VALUE_TYPE_COORD,
H2O_PROPERTY_VALUE_TYPE_ENUM,
H2O_PROPERTY_VALUE_TYPE_ENUMS,
H2O_PROPERTY_VALUE_TYPE_GUID,
H2O_PROPERTY_VALUE_TYPE_VALUE,
H2O_PROPERTY_VALUE_TYPE_ID,
H2O_PROPERTY_VALUE_TYPE_IMAGE,
H2O_PROPERTY_VALUE_TYPE_KEYWORD,
H2O_PROPERTY_VALUE_TYPE_KEYWORDS,
H2O_PROPERTY_VALUE_TYPE_OVERRIDE,
H2O_PROPERTY_VALUE_TYPE_SIZE,
H2O_PROPERTY_VALUE_TYPE_SIZES,
H2O_PROPERTY_VALUE_TYPE_STRING,
H2O_PROPERTY_VALUE_TYPE_SUBELEMENT,
H2O_PROPERTY_VALUE_TYPE_TOKEN,
H2O_PROPERTY_VALUE_TYPE_MAX
} H2O_PROPERTY_VALUE_TYPE;
typedef enum {
DISPLAY_SUB_ELEMENT_NAME_NONE = 0,
DISPLAY_SUB_ELEMENT_NAME_FORM_IMAGE,
DISPLAY_SUB_ELEMENT_NAME_FORM_TITLE,
DISPLAY_SUB_ELEMENT_NAME_FORMSET_HELP,
DISPLAY_SUB_ELEMENT_NAME_FORMSET_HELP_IMAGE,
DISPLAY_SUB_ELEMENT_NAME_FORMSET_IMAGE,
DISPLAY_SUB_ELEMENT_NAME_FORMSET_TITLE,
DISPLAY_SUB_ELEMENT_NAME_GROUP,
DISPLAY_SUB_ELEMENT_NAME_HELP,
DISPLAY_SUB_ELEMENT_NAME_HELP_IMAGE,
DISPLAY_SUB_ELEMENT_NAME_IMAGE,
DISPLAY_SUB_ELEMENT_NAME_IMG_0,
DISPLAY_SUB_ELEMENT_NAME_IMG_1,
DISPLAY_SUB_ELEMENT_NAME_IMG_2,
DISPLAY_SUB_ELEMENT_NAME_IMG_3,
DISPLAY_SUB_ELEMENT_NAME_IMG_4,
DISPLAY_SUB_ELEMENT_NAME_IMG_5,
DISPLAY_SUB_ELEMENT_NAME_IMG_6,
DISPLAY_SUB_ELEMENT_NAME_IMG_7,
DISPLAY_SUB_ELEMENT_NAME_IMG_8,
DISPLAY_SUB_ELEMENT_NAME_IMG_9,
DISPLAY_SUB_ELEMENT_NAME_PROMPT,
DISPLAY_SUB_ELEMENT_NAME_STR_0,
DISPLAY_SUB_ELEMENT_NAME_STR_1,
DISPLAY_SUB_ELEMENT_NAME_STR_2,
DISPLAY_SUB_ELEMENT_NAME_STR_3,
DISPLAY_SUB_ELEMENT_NAME_STR_4,
DISPLAY_SUB_ELEMENT_NAME_STR_5,
DISPLAY_SUB_ELEMENT_NAME_STR_6,
DISPLAY_SUB_ELEMENT_NAME_STR_7,
DISPLAY_SUB_ELEMENT_NAME_STR_8,
DISPLAY_SUB_ELEMENT_NAME_STR_9,
DISPLAY_SUB_ELEMENT_NAME_TEXT2,
DISPLAY_SUB_ELEMENT_NAME_VALUE,
DISPLAY_SUB_ELEMENT_NAME_VALUE_IMAGE,
DISPLAY_SUB_ELEMENT_NAME_MAX
} DISPLAY_SUB_ELEMENT_NAME;
///
/// Style Ref opcode.
///
typedef struct _H2O_IFR_GUID_STYLE_REF {
EFI_IFR_OP_HEADER Header;
///
/// H2O_IFR_EXT_GUID.
///
EFI_GUID Guid;
///
/// H2O_IFR_EXT_STYLE_REF
///
UINT16 Function;
UINT8 Type;
UINT8 ClassNameOffset;
UINT8 PseudoClassOffset;
//CHAR8 Selector[1];
} H2O_IFR_GUID_STYLE_REF;
///
/// Extended Text opcode.
///
typedef struct _H2O_IFR_GUID_TEXT {
EFI_IFR_OP_HEADER Header;
///
/// H2O_IFR_EXT_GUID.
///
EFI_GUID Guid;
///
/// H2O_IFR_EXT_TEXT
///
UINT16 Function;
EFI_STRING_ID Text;
} H2O_IFR_GUID_TEXT;
///
/// Extended Import opcode.
///
typedef struct _H2O_IFR_GUID_IMPORT {
EFI_IFR_OP_HEADER Header;
EFI_GUID Guid;
UINT16 Function;
UINT16 Flags;
EFI_GUID TargetFormsetGuid;
EFI_FORM_ID TargetFormId;
EFI_QUESTION_ID TargetId;
EFI_QUESTION_ID LocalId;
UINT16 TargetVarstoreSize;
EFI_GUID TargetVarstoreGuid;
CHAR8 TargetVarstoreName[0];
} H2O_IFR_GUID_IMPORT;
///
/// Extended Import Target and Link Target opcodes.
///
#define H2O_HII_TARGET_PRIORITY_PROPERTY_NAME "import-priority"
#define H2O_HII_TARGET_PRIORITY_PROPERTY_DEFAULT_VALUE 0x8000
typedef struct _H2O_IFR_GUID_IMPORT_TARGET {
EFI_IFR_OP_HEADER Header;
EFI_GUID Guid;
UINT16 Function;
EFI_GUID TargetFormsetGuid;
EFI_FORM_ID TargetFormId;
UINT16 TargetLabelId;
} H2O_IFR_GUID_IMPORT_TARGET;
typedef struct _H2O_IFR_GUID_LINK_TARGET {
EFI_IFR_OP_HEADER Header;
EFI_GUID Guid;
UINT16 Function;
EFI_GUID TargetFormsetGuid;
EFI_FORM_ID TargetFormId;
UINT16 TargetLabelId;
} H2O_IFR_GUID_LINK_TARGET;
//
// Local Id for import
//
#define H2O_IFR_GUID_IMPORT_LOCAL_ID_USE_TARGET_ID 0x0000
#define H2O_IFR_GUID_IMPORT_LOCAL_ID_NON_CONFLICTING 0xFFFF
///
/// Extended Flags opcode.
///
typedef struct _H2O_IFR_GUID_EXT_FLAGS {
EFI_IFR_OP_HEADER Header;
///
/// H2O_IFR_EXT_GUID.
///
EFI_GUID Guid;
///
/// H2O_IFR_EXT_EXT_FLAGS
///
UINT16 Function;
UINT32 ExtFlags;
} H2O_IFR_GUID_EXT_FLAGS;
//
// Extended Flags
//
#define H2O_IFR_EXT_FLAG_SETUP_CHANGE_LIST_IGNORE 0x00000001
///
/// Include Guid opcode for Link opcode.
///
typedef struct _H2O_IFR_GUID_INCLUDE_FORM_SET {
EFI_IFR_OP_HEADER Header;
///
/// H2O_IFR_EXT_GUID.
///
EFI_GUID Guid;
///
/// H2O_IFR_EXT_INCLUDE_FORM_SET
///
UINT16 Function;
EFI_GUID IncludeGuid;
} H2O_IFR_GUID_INCLUDE_FORM_SET;
///
/// Exclude Guid opcode for Link opcode.
///
typedef struct _H2O_IFR_GUID_EXCLUDE_FORM_SET {
EFI_IFR_OP_HEADER Header;
///
/// H2O_IFR_EXT_GUID.
///
EFI_GUID Guid;
///
/// H2O_IFR_EXT_EXCLUDE_FORM_SET
///
UINT16 Function;
EFI_GUID ExcludeGuid;
} H2O_IFR_GUID_EXCLUDE_FORM_SET;
typedef UINT16 H2O_PANEL_ID;
typedef UINT16 H2O_LAYOUT_ID;
//
// Hii Layout Package
//
typedef struct _H2O_HII_LAYOUT_PACKAGE_HDR {
EFI_HII_GUID_PACKAGE_HDR GuidPkgHeader;
UINT8 *LayoutPkgBuffer;
} H2O_HII_LAYOUT_PACKAGE_HDR;
#define H2O_HII_PACKAGE_LAYOUTS 0xe0
typedef struct _H2O_LAYOUT_PACKAGE_HDR {
EFI_HII_PACKAGE_HEADER Header;
UINT32 HdrSize;
UINT32 LayoutBlockOffset;
} H2O_LAYOUT_PACKAGE_HDR;
typedef struct _H2O_HII_LAYOUT_BLOCK {
UINT8 BlockType;
UINT8 BlockSize;
//UINT8 BlockData[1];
} H2O_HII_LAYOUT_BLOCK;
#define H2O_HII_LIBT_LAYOUT_BEGIN 0x01
#define H2O_HII_LIBT_LAYOUT_END 0x02
#define H2O_HII_LIBT_PANEL_BEGIN 0x03
#define H2O_HII_LIBT_PANEL_END 0x04
#define H2O_HII_LIBT_STYLE_BEGIN 0x05
#define H2O_HII_LIBT_STYLE_END 0x06
#define H2O_HII_LIBT_PROPERTY 0x07
#define H2O_HII_LIBT_LAYOUT_DUP 0x08
#define H2O_HII_LIBT_PANEL_DUP 0x09
#define H2O_HII_LIBT_EXT2 0x10
#define H2O_HII_LIBT_EXT4 0x11
#define H2O_HII_LIBT_FORMAT 0x12
#define H2O_HII_LIBT_ENUM 0x13
#define H2O_HII_LIBT_KEYWORD 0x14
typedef struct _H2O_HII_LIBT_LAYOUT_BEGIN_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
H2O_LAYOUT_ID LayoutId;
EFI_GUID DisplayEngineGuid[3];
} H2O_HII_LIBT_LAYOUT_BEGIN_BLOCK;
typedef struct _H2O_HII_LIBT_LAYOUT_END_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
} H2O_HII_LIBT_LAYOUT_END_BLOCK;
typedef UINT32 H2O_PANEL_TYPE;
#define H2O_PANEL_TYPE_SCREEN 0x0000
#define H2O_PANEL_TYPE_HOTKEY 0x0001
#define H2O_PANEL_TYPE_SETUP_MENU 0x0003
#define H2O_PANEL_TYPE_SETUP_PAGE 0x0004
#define H2O_PANEL_TYPE_OWNER_DRAW 0x0007
#define H2O_PANEL_TYPE_FORM 0x0008
#define H2O_PANEL_TYPE_DISPLAY_ELEMENT 0x0009
#define H2O_PANEL_TYPE_GUID 0xffff
typedef struct _H2O_HII_LIBT_PANEL_BEGIN_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
H2O_PANEL_ID PanelId;
H2O_PANEL_TYPE PanelType;
EFI_GUID PanelTypeGuid;
EFI_GUID TargetFormsetGuid;
UINT16 TargetFormId;
} H2O_HII_LIBT_PANEL_BEGIN_BLOCK;
typedef struct _H2O_HII_LIBT_PANEL_END_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
} H2O_HII_LIBT_PANEL_END_BLOCK;
typedef struct _H2O_HII_LIBT_STYLE_BEGIN_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
UINT32 Type;
UINT8 ClassNameOffset;
UINT8 PseudoClassOffset;
//CHAR8 Selector[1];
} H2O_HII_LIBT_STYLE_BEGIN_BLOCK;
typedef struct _H2O_HII_LIBT_STYLE_END_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
} H2O_HII_LIBT_STYLE_END_BLOCK;
typedef struct _H2O_HII_LIBT_PROPERTY_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
UINT32 ValueType;
UINT8 IdentifierOffset;
UINT8 ValueOffset;
H2O_VALUE H2OValue;
//CHAR8 Property[1];
} H2O_HII_LIBT_PROPERTY_BLOCK;
typedef struct _H2O_HII_LIBT_FORMAT_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
UINT32 StyleType;
UINT32 ValueType;
UINT8 IdentifierOffset;
} H2O_HII_LIBT_FORMAT_BLOCK;
typedef struct _H2O_HII_LIBT_ENUM_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
UINT32 ValueNumber;
UINT8 ValueOffset;
} H2O_HII_LIBT_ENUM_BLOCK;
typedef struct _H2O_HII_LIBT_KEYWORD_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
UINT8 ValueOffset;
} H2O_HII_LIBT_KEYWORD_BLOCK;
typedef struct _H2O_HII_LIBT_LAYOUT_DUP_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
H2O_LAYOUT_ID LayoutId;
H2O_LAYOUT_ID OldLayoutId;
} H2O_HII_LIBT_LAYOUT_DUP_BLOCK;
typedef struct _H2O_HII_LIBT_PANEL_DUP_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
H2O_PANEL_ID PanelId;
H2O_LAYOUT_ID OldLayoutId;
H2O_PANEL_ID OldPanelId;
} H2O_HII_LIBT_PANEL_DUP_BLOCK;
typedef struct _H2O_HII_LIBT_EXT2_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
UINT8 BlockType;
UINT16 BlockSize;
//UINT8 BlockData[1];
} H2O_HII_LIBT_EXT2_BLOCK;
typedef struct _H2O_HII_LIBT_EXT4_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
UINT8 BlockType;
UINT32 BlockSize;
//UINT8 BlockData[1];
} H2O_HII_LIBT_EXT4_BLOCK;
//
// ======= Vfr Tree =========
//
typedef UINT16 H2O_VFR_ID;
typedef UINT16 H2O_FORM_ID;
typedef UINT16 H2O_HOTKEY_ID;
#define H2O_HII_LIBT_EXT_VFR 0x81
#define H2O_HII_LIBT_EXT_VFR_END 0x82
#define H2O_HII_LIBT_EXT_FORMSET 0x83
#define H2O_HII_LIBT_EXT_FORMSET_END 0x84
#define H2O_HII_LIBT_EXT_FORM 0x85
#define H2O_HII_LIBT_EXT_FORM_END 0x86
#define H2O_HII_LIBT_EXT_HOTKEY 0x87
#define H2O_HII_LIBT_EXT_HOTKEY_END 0x88
#define H2O_HII_LIBT_EXT_IMPORT 0x89
#define H2O_HII_LIBT_EXT_IMPORT_END 0x8A
#define H2O_HII_LIBT_EXT_STATEMENT 0x8B
#define H2O_HII_LIBT_EXT_STATEMENT_END 0x8C
#define H2O_HII_LIBT_EXPRESSION 0x8D
#define H2O_HII_LIBT_EXPRESSION_QID_MAP 0x8F
#define H2O_HII_LIBT_IMPORT_TARGET_BEGIN 0x90
#define H2O_HII_LIBT_IMPORT_TARGET_END 0x91
#define H2O_HII_LIBT_LINK_TARGET_BEGIN 0x92
#define H2O_HII_LIBT_LINK_TARGET_END 0x93
typedef struct _H2O_HII_LIBT_EXT_VFR_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
H2O_VFR_ID VfrId;
} H2O_HII_LIBT_EXT_VFR_BLOCK;
typedef struct _H2O_HII_LIBT_EXT_VFR_END_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
} H2O_HII_LIBT_EXT_VFR_END_BLOCK;
typedef struct _H2O_HII_LIBT_EXT_FORMSET_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
EFI_GUID FormsetId;
EFI_GUID ClassId[3];
UINT32 LayoutId; // Optional layout identifier.
BOOLEAN IsNew; // Optional keyword.
EFI_STRING_ID Title; // Optional string identifier. Mandatory if new is specified.
EFI_STRING_ID Help; // Optional string identifier. Mandatory if new is specified.
EFI_ANIMATION_ID Animation; // Optional animation identifier. Mandatory if new is specified.
EFI_IMAGE_ID Image; // Optional image identifier. Mandatory if new is specified.
EFI_IMAGE_ID HelpImage; // Optional image identifier. Mandatory if new is specified.
} H2O_HII_LIBT_EXT_FORMSET_BLOCK;
typedef struct _H2O_HII_LIBT_EXT_FORMSET_END_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
} H2O_HII_LIBT_EXT_FORMSET_END_BLOCK;
typedef struct _H2O_HII_LIBT_EXT_FORM_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
H2O_FORM_ID FormId;
UINT32 LayoutId; // Optional layout identifier.
EFI_STRING_ID Title; // Optional string identifier. Mandatory if new is specified.
EFI_STRING_ID Help; // Optional string identifier. Mandatory if new is specified.
EFI_ANIMATION_ID Animation; // Optional animation identifier. Mandatory if new is specified.
EFI_IMAGE_ID Image; // Optional image identifier. Mandatory if new is specified.
EFI_IMAGE_ID HelpImage; // Optional image identifier. Mandatory if new is specified.
} H2O_HII_LIBT_EXT_FORM_BLOCK;
typedef struct _H2O_HII_LIBT_EXT_FORM_END_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
} H2O_HII_LIBT_EXT_FORM_END_BLOCK;
typedef UINT16 H2O_GROUP_ID;
typedef UINT16 H2O_ACTION_ID;
typedef struct _H2O_HII_LIBT_EXT_HOTKEY_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
H2O_HOTKEY_ID HotkeyId;
EFI_STRING_ID Prompt;
EFI_IMAGE_ID Image;
EFI_STRING_ID Help;
EFI_IMAGE_ID HelpImage;
H2O_GROUP_ID Group;
H2O_ACTION_ID Action;
EFI_DEFAULT_ID ActionDefaultId;
EFI_FORM_ID ActionFormId;
EFI_GUID ActionFormsetId;
EFI_QUESTION_ID ActionQuestionId;
H2O_VALUE ActionQuestionValue;
UINT32 ActionScope;
} H2O_HII_LIBT_EXT_HOTKEY_BLOCK;
#define H2O_HOT_KEY_ACTION_SHOW_HELP 0x00000001
#define H2O_HOT_KEY_ACTION_SELECT_PREVIOUS_ITEM 0x00000002
#define H2O_HOT_KEY_ACTION_SELECT_NEXT_ITEM 0x00000003
#define H2O_HOT_KEY_ACTION_SELECT_PREVIOUS_MENU 0x00000004
#define H2O_HOT_KEY_ACTION_SELECT_NEXT_MENU 0x00000005
#define H2O_HOT_KEY_ACTION_MODIFY_PREVIOUS_VALUE 0x00000006
#define H2O_HOT_KEY_ACTION_MODIFY_NEXT_VALUE 0x00000007
#define H2O_HOT_KEY_ACTION_DISCARD 0x00000008
#define H2O_HOT_KEY_ACTION_DISCARD_AND_EXIT 0x00000009
#define H2O_HOT_KEY_ACTION_LOAD_DEFAULT 0x0000000A
#define H2O_HOT_KEY_ACTION_SAVE 0x0000000B
#define H2O_HOT_KEY_ACTION_SAVE_AND_EXIT 0x0000000C
#define H2O_HOT_KEY_ACTION_ENTER 0x0000000D
#define H2O_HOT_KEY_ACTION_CALLBACK 0x0000000E
#define H2O_HOT_KEY_ACTION_GOTO 0x0000000F
#define H2O_HOT_KEY_ACTION_SET_QUESTION_VALUE 0x00000010
#define H2O_HOT_KEY_ACTION_SCOPE_CURRENT 0x00000000
#define H2O_HOT_KEY_ACTION_SCOPE_ALL 0x00000001
#define H2O_HOT_KEY_ACTION_SCOPE_FORMSET 0x00000002
#define H2O_HOT_KEY_ACTION_SCOPE_FORM 0x00000003
#define H2O_HOT_KEY_ACTION_SCOPE_QUESTION 0x00000004
typedef struct _H2O_HII_LIBT_EXT_HOTKEY_END_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
} H2O_HII_LIBT_EXT_HOTKEY_END_BLOCK;
#define H2O_HII_IMPORT_QUESTION BIT0
#define H2O_HII_IMPORT_CURRENT_SELECTION BIT1
typedef struct _H2O_HII_LIBT_EXT_IMPORT_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
UINT16 Flags;
EFI_GUID TargetFormsetGuid;
EFI_FORM_ID TargetFormId;
EFI_QUESTION_ID TargetId;
EFI_QUESTION_ID LocalId;
UINT16 TargetVarstoreSize;
EFI_GUID TargetVarstoreGuid;
//CHAR8 TargetVarstoreName[1];
} H2O_HII_LIBT_EXT_IMPORT_BLOCK;
#define H2O_HII_STATEMENT_QUESTION BIT0
typedef struct _H2O_HII_LIBT_EXT_STATEMENT_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
UINT16 Flags;
UINT16 Position;
UINT16 StatementId;
EFI_QUESTION_ID QuestionId;
} H2O_HII_LIBT_EXT_STATEMENT_BLOCK;
typedef struct _H2O_HII_LIBT_EXT_STATEMENT_END_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
} H2O_HII_LIBT_EXT_STATEMENT_END_BLOCK;
typedef struct _H2O_HII_LIBT_EXPRESSION_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
UINT8 ExpressionOpcodes[1];
} H2O_HII_LIBT_EXPRESSION_BLOCK;
typedef struct _H2O_HII_LIBT_EXPRESSION_QID_MAP_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
EFI_GUID TargetFormSetGuid;
EFI_FORM_ID TargetFormId;
EFI_QUESTION_ID TargetQId;
EFI_QUESTION_ID LocalQId;
EFI_QUESTION_ID ExpressionQId;
} H2O_HII_LIBT_EXPRESSION_QID_MAP_BLOCK;
typedef struct _H2O_HII_LIBT_IMPORT_TARGET_BEGIN_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
EFI_GUID TargetFormsetGuid;
EFI_FORM_ID TargetFormId;
UINT16 TargetLabelId;
} H2O_HII_LIBT_IMPORT_TARGET_BEGIN_BLOCK;
typedef struct _H2O_HII_LIBT_IMPORT_TARGET_END_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
} H2O_HII_LIBT_IMPORT_TARGET_END_BLOCK;
typedef struct _H2O_HII_LIBT_LINK_TARGET_BEGIN_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
EFI_GUID TargetFormsetGuid;
EFI_FORM_ID TargetFormId;
UINT16 TargetLabelId;
} H2O_HII_LIBT_LINK_TARGET_BEGIN_BLOCK;
typedef struct _H2O_HII_LIBT_LINK_TARGET_END_BLOCK {
H2O_HII_LAYOUT_BLOCK Header;
} H2O_HII_LIBT_LINK_TARGET_END_BLOCK;
#pragma pack()
extern EFI_GUID gH2OIfrExtGuid;
extern EFI_GUID gH2OBdsLoadOptionFrontPageGuid;
extern EFI_GUID gH2OBdsLoadOptionBootMaintenanceGuid;
extern EFI_GUID gH2OBdsLoadOptionBootManagerGuid;
extern EFI_GUID gH2OBdsLoadOptionDeviceManagerGuid;
extern EFI_GUID gH2OBdsLoadOptionSecureBootManagerGuid;
extern EFI_GUID gH2OBdsLoadOptionSetupUtilityAppFileGuid;
#endif