805 lines
26 KiB
C
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
|
|
|