mirror of https://github.com/acidanthera/audk.git
2107 lines
62 KiB
C
2107 lines
62 KiB
C
/** @file
|
|
This file defines the encoding for the VFR (Visual Form Representation) language.
|
|
IFR is primarily consumed by the EFI presentation engine, and produced by EFI
|
|
internal application and drivers as well as all add-in card option-ROM drivers
|
|
|
|
Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
|
|
This program and the accompanying materials are licensed and made available under
|
|
the terms and conditions of the BSD License that accompanies this distribution.
|
|
The full text of the license may be found at
|
|
http://opensource.org/licenses/bsd-license.php.
|
|
|
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
|
|
@par Revision Reference:
|
|
These definitions are from UEFI 2.1 and 2.2.
|
|
|
|
**/
|
|
|
|
#ifndef __UEFI_INTERNAL_FORMREPRESENTATION_H__
|
|
#define __UEFI_INTERNAL_FORMREPRESENTATION_H__
|
|
|
|
#include <Guid/HiiFormMapMethodGuid.h>
|
|
|
|
///
|
|
/// The following types are currently defined:
|
|
///
|
|
typedef VOID* EFI_HII_HANDLE;
|
|
typedef CHAR16* EFI_STRING;
|
|
typedef UINT16 EFI_IMAGE_ID;
|
|
typedef UINT16 EFI_QUESTION_ID;
|
|
typedef UINT16 EFI_STRING_ID;
|
|
typedef UINT16 EFI_FORM_ID;
|
|
typedef UINT16 EFI_VARSTORE_ID;
|
|
typedef UINT16 EFI_ANIMATION_ID;
|
|
|
|
typedef UINT16 EFI_DEFAULT_ID;
|
|
|
|
typedef UINT32 EFI_HII_FONT_STYLE;
|
|
|
|
|
|
|
|
#pragma pack(1)
|
|
|
|
//
|
|
// Definitions for Package Lists and Package Headers
|
|
// Section 27.3.1
|
|
//
|
|
|
|
///
|
|
/// The header found at the start of each package list.
|
|
///
|
|
typedef struct {
|
|
EFI_GUID PackageListGuid;
|
|
UINT32 PackageLength;
|
|
} EFI_HII_PACKAGE_LIST_HEADER;
|
|
|
|
///
|
|
/// The header found at the start of each package.
|
|
///
|
|
typedef struct {
|
|
UINT32 Length:24;
|
|
UINT32 Type:8;
|
|
// UINT8 Data[...];
|
|
} EFI_HII_PACKAGE_HEADER;
|
|
|
|
//
|
|
// Value of HII package type
|
|
//
|
|
#define EFI_HII_PACKAGE_TYPE_ALL 0x00
|
|
#define EFI_HII_PACKAGE_TYPE_GUID 0x01
|
|
#define EFI_HII_PACKAGE_FORMS 0x02
|
|
#define EFI_HII_PACKAGE_STRINGS 0x04
|
|
#define EFI_HII_PACKAGE_FONTS 0x05
|
|
#define EFI_HII_PACKAGE_IMAGES 0x06
|
|
#define EFI_HII_PACKAGE_SIMPLE_FONTS 0x07
|
|
#define EFI_HII_PACKAGE_DEVICE_PATH 0x08
|
|
#define EFI_HII_PACKAGE_KEYBOARD_LAYOUT 0x09
|
|
#define EFI_HII_PACKAGE_ANIMATIONS 0x0A
|
|
#define EFI_HII_PACKAGE_END 0xDF
|
|
#define EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN 0xE0
|
|
#define EFI_HII_PACKAGE_TYPE_SYSTEM_END 0xFF
|
|
|
|
//
|
|
// Definitions for Simplified Font Package
|
|
//
|
|
|
|
///
|
|
/// Contents of EFI_NARROW_GLYPH.Attributes.
|
|
///@{
|
|
#define EFI_GLYPH_NON_SPACING 0x01
|
|
#define EFI_GLYPH_WIDE 0x02
|
|
#define EFI_GLYPH_HEIGHT 19
|
|
#define EFI_GLYPH_WIDTH 8
|
|
///@}
|
|
|
|
///
|
|
/// The EFI_NARROW_GLYPH has a preferred dimension (w x h) of 8 x 19 pixels.
|
|
///
|
|
typedef struct {
|
|
///
|
|
/// The Unicode representation of the glyph. The term weight is the
|
|
/// technical term for a character code.
|
|
///
|
|
CHAR16 UnicodeWeight;
|
|
///
|
|
/// The data element containing the glyph definitions.
|
|
///
|
|
UINT8 Attributes;
|
|
///
|
|
/// The column major glyph representation of the character. Bits
|
|
/// with values of one indicate that the corresponding pixel is to be
|
|
/// on when normally displayed; those with zero are off.
|
|
///
|
|
UINT8 GlyphCol1[EFI_GLYPH_HEIGHT];
|
|
} EFI_NARROW_GLYPH;
|
|
|
|
///
|
|
/// The EFI_WIDE_GLYPH has a preferred dimension (w x h) of 16 x 19 pixels, which is large enough
|
|
/// to accommodate logographic characters.
|
|
///
|
|
typedef struct {
|
|
///
|
|
/// The Unicode representation of the glyph. The term weight is the
|
|
/// technical term for a character code.
|
|
///
|
|
CHAR16 UnicodeWeight;
|
|
///
|
|
/// The data element containing the glyph definitions.
|
|
///
|
|
UINT8 Attributes;
|
|
///
|
|
/// The column major glyph representation of the character. Bits
|
|
/// with values of one indicate that the corresponding pixel is to be
|
|
/// on when normally displayed; those with zero are off.
|
|
///
|
|
UINT8 GlyphCol1[EFI_GLYPH_HEIGHT];
|
|
///
|
|
/// The column major glyph representation of the character. Bits
|
|
/// with values of one indicate that the corresponding pixel is to be
|
|
/// on when normally displayed; those with zero are off.
|
|
///
|
|
UINT8 GlyphCol2[EFI_GLYPH_HEIGHT];
|
|
///
|
|
/// Ensures that sizeof (EFI_WIDE_GLYPH) is twice the
|
|
/// sizeof (EFI_NARROW_GLYPH). The contents of Pad must
|
|
/// be zero.
|
|
///
|
|
UINT8 Pad[3];
|
|
} EFI_WIDE_GLYPH;
|
|
|
|
///
|
|
/// A simplified font package consists of a font header
|
|
/// followed by a series of glyph structures.
|
|
///
|
|
typedef struct _EFI_HII_SIMPLE_FONT_PACKAGE_HDR {
|
|
EFI_HII_PACKAGE_HEADER Header;
|
|
UINT16 NumberOfNarrowGlyphs;
|
|
UINT16 NumberOfWideGlyphs;
|
|
// EFI_NARROW_GLYPH NarrowGlyphs[];
|
|
// EFI_WIDE_GLYPH WideGlyphs[];
|
|
} EFI_HII_SIMPLE_FONT_PACKAGE_HDR;
|
|
|
|
//
|
|
// Definitions for Font Package
|
|
// Section 27.3.3
|
|
//
|
|
|
|
//
|
|
// Value for font style
|
|
//
|
|
#define EFI_HII_FONT_STYLE_NORMAL 0x00000000
|
|
#define EFI_HII_FONT_STYLE_BOLD 0x00000001
|
|
#define EFI_HII_FONT_STYLE_ITALIC 0x00000002
|
|
#define EFI_HII_FONT_STYLE_EMBOSS 0x00010000
|
|
#define EFI_HII_FONT_STYLE_OUTLINE 0x00020000
|
|
#define EFI_HII_FONT_STYLE_SHADOW 0x00040000
|
|
#define EFI_HII_FONT_STYLE_UNDERLINE 0x00080000
|
|
#define EFI_HII_FONT_STYLE_DBL_UNDER 0x00100000
|
|
|
|
typedef struct _EFI_HII_GLYPH_INFO {
|
|
UINT16 Width;
|
|
UINT16 Height;
|
|
INT16 OffsetX;
|
|
INT16 OffsetY;
|
|
INT16 AdvanceX;
|
|
} EFI_HII_GLYPH_INFO;
|
|
|
|
///
|
|
/// The fixed header consists of a standard record header,
|
|
/// then the character values in this section, the flags
|
|
/// (including the encoding method) and the offsets of the glyph
|
|
/// information, the glyph bitmaps and the character map.
|
|
///
|
|
typedef struct _EFI_HII_FONT_PACKAGE_HDR {
|
|
EFI_HII_PACKAGE_HEADER Header;
|
|
UINT32 HdrSize;
|
|
UINT32 GlyphBlockOffset;
|
|
EFI_HII_GLYPH_INFO Cell;
|
|
EFI_HII_FONT_STYLE FontStyle;
|
|
CHAR16 FontFamily[1];
|
|
} EFI_HII_FONT_PACKAGE_HDR;
|
|
|
|
//
|
|
// Value of different glyph info block types
|
|
//
|
|
#define EFI_HII_GIBT_END 0x00
|
|
#define EFI_HII_GIBT_GLYPH 0x10
|
|
#define EFI_HII_GIBT_GLYPHS 0x11
|
|
#define EFI_HII_GIBT_GLYPH_DEFAULT 0x12
|
|
#define EFI_HII_GIBT_GLYPHS_DEFAULT 0x13
|
|
#define EFI_HII_GIBT_DUPLICATE 0x20
|
|
#define EFI_HII_GIBT_SKIP2 0x21
|
|
#define EFI_HII_GIBT_SKIP1 0x22
|
|
#define EFI_HII_GIBT_DEFAULTS 0x23
|
|
#define EFI_HII_GIBT_EXT1 0x30
|
|
#define EFI_HII_GIBT_EXT2 0x31
|
|
#define EFI_HII_GIBT_EXT4 0x32
|
|
|
|
typedef struct _EFI_HII_GLYPH_BLOCK {
|
|
UINT8 BlockType;
|
|
} EFI_HII_GLYPH_BLOCK;
|
|
|
|
//
|
|
// Definition of different glyph info block types
|
|
//
|
|
|
|
typedef struct _EFI_HII_GIBT_DEFAULTS_BLOCK {
|
|
EFI_HII_GLYPH_BLOCK Header;
|
|
EFI_HII_GLYPH_INFO Cell;
|
|
} EFI_HII_GIBT_DEFAULTS_BLOCK;
|
|
|
|
typedef struct _EFI_HII_GIBT_DUPLICATE_BLOCK {
|
|
EFI_HII_GLYPH_BLOCK Header;
|
|
CHAR16 CharValue;
|
|
} EFI_HII_GIBT_DUPLICATE_BLOCK;
|
|
|
|
typedef struct _EFI_GLYPH_GIBT_END_BLOCK {
|
|
EFI_HII_GLYPH_BLOCK Header;
|
|
} EFI_GLYPH_GIBT_END_BLOCK;
|
|
|
|
typedef struct _EFI_HII_GIBT_EXT1_BLOCK {
|
|
EFI_HII_GLYPH_BLOCK Header;
|
|
UINT8 BlockType2;
|
|
UINT8 Length;
|
|
} EFI_HII_GIBT_EXT1_BLOCK;
|
|
|
|
typedef struct _EFI_HII_GIBT_EXT2_BLOCK {
|
|
EFI_HII_GLYPH_BLOCK Header;
|
|
UINT8 BlockType2;
|
|
UINT16 Length;
|
|
} EFI_HII_GIBT_EXT2_BLOCK;
|
|
|
|
typedef struct _EFI_HII_GIBT_EXT4_BLOCK {
|
|
EFI_HII_GLYPH_BLOCK Header;
|
|
UINT8 BlockType2;
|
|
UINT32 Length;
|
|
} EFI_HII_GIBT_EXT4_BLOCK;
|
|
|
|
typedef struct _EFI_HII_GIBT_GLYPH_BLOCK {
|
|
EFI_HII_GLYPH_BLOCK Header;
|
|
EFI_HII_GLYPH_INFO Cell;
|
|
UINT8 BitmapData[1];
|
|
} EFI_HII_GIBT_GLYPH_BLOCK;
|
|
|
|
typedef struct _EFI_HII_GIBT_GLYPHS_BLOCK {
|
|
EFI_HII_GLYPH_BLOCK Header;
|
|
EFI_HII_GLYPH_INFO Cell;
|
|
UINT16 Count;
|
|
UINT8 BitmapData[1];
|
|
} EFI_HII_GIBT_GLYPHS_BLOCK;
|
|
|
|
typedef struct _EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK {
|
|
EFI_HII_GLYPH_BLOCK Header;
|
|
UINT8 BitmapData[1];
|
|
} EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK;
|
|
|
|
typedef struct _EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK {
|
|
EFI_HII_GLYPH_BLOCK Header;
|
|
UINT16 Count;
|
|
UINT8 BitmapData[1];
|
|
} EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK;
|
|
|
|
typedef struct _EFI_HII_GIBT_SKIP1_BLOCK {
|
|
EFI_HII_GLYPH_BLOCK Header;
|
|
UINT8 SkipCount;
|
|
} EFI_HII_GIBT_SKIP1_BLOCK;
|
|
|
|
typedef struct _EFI_HII_GIBT_SKIP2_BLOCK {
|
|
EFI_HII_GLYPH_BLOCK Header;
|
|
UINT16 SkipCount;
|
|
} EFI_HII_GIBT_SKIP2_BLOCK;
|
|
|
|
//
|
|
// Definitions for Device Path Package
|
|
// Section 27.3.4
|
|
//
|
|
|
|
///
|
|
/// The device path package is used to carry a device path
|
|
/// associated with the package list.
|
|
///
|
|
typedef struct _EFI_HII_DEVICE_PATH_PACKAGE_HDR {
|
|
EFI_HII_PACKAGE_HEADER Header;
|
|
// EFI_DEVICE_PATH_PROTOCOL DevicePath[];
|
|
} EFI_HII_DEVICE_PATH_PACKAGE_HDR;
|
|
|
|
//
|
|
// Definitions for GUID Package
|
|
// Section 27.3.5
|
|
//
|
|
|
|
///
|
|
/// The GUID package is used to carry data where the format is defined by a GUID.
|
|
///
|
|
typedef struct _EFI_HII_GUID_PACKAGE_HDR {
|
|
EFI_HII_PACKAGE_HEADER Header;
|
|
EFI_GUID Guid;
|
|
// Data per GUID definition may follow
|
|
} EFI_HII_GUID_PACKAGE_HDR;
|
|
|
|
//
|
|
// Definitions for String Package
|
|
// Section 27.3.6
|
|
//
|
|
|
|
#define UEFI_CONFIG_LANG "x-UEFI"
|
|
#define UEFI_CONFIG_LANG_2 "x-i-UEFI"
|
|
|
|
///
|
|
/// The fixed header consists of a standard record header and then the string identifiers
|
|
/// contained in this section and the offsets of the string and language information.
|
|
///
|
|
typedef struct _EFI_HII_STRING_PACKAGE_HDR {
|
|
EFI_HII_PACKAGE_HEADER Header;
|
|
UINT32 HdrSize;
|
|
UINT32 StringInfoOffset;
|
|
CHAR16 LanguageWindow[16];
|
|
EFI_STRING_ID LanguageName;
|
|
CHAR8 Language[1];
|
|
} EFI_HII_STRING_PACKAGE_HDR;
|
|
|
|
typedef struct {
|
|
UINT8 BlockType;
|
|
} EFI_HII_STRING_BLOCK;
|
|
|
|
//
|
|
// Value of different string information block types
|
|
//
|
|
#define EFI_HII_SIBT_END 0x00
|
|
#define EFI_HII_SIBT_STRING_SCSU 0x10
|
|
#define EFI_HII_SIBT_STRING_SCSU_FONT 0x11
|
|
#define EFI_HII_SIBT_STRINGS_SCSU 0x12
|
|
#define EFI_HII_SIBT_STRINGS_SCSU_FONT 0x13
|
|
#define EFI_HII_SIBT_STRING_UCS2 0x14
|
|
#define EFI_HII_SIBT_STRING_UCS2_FONT 0x15
|
|
#define EFI_HII_SIBT_STRINGS_UCS2 0x16
|
|
#define EFI_HII_SIBT_STRINGS_UCS2_FONT 0x17
|
|
#define EFI_HII_SIBT_DUPLICATE 0x20
|
|
#define EFI_HII_SIBT_SKIP2 0x21
|
|
#define EFI_HII_SIBT_SKIP1 0x22
|
|
#define EFI_HII_SIBT_EXT1 0x30
|
|
#define EFI_HII_SIBT_EXT2 0x31
|
|
#define EFI_HII_SIBT_EXT4 0x32
|
|
#define EFI_HII_SIBT_FONT 0x40
|
|
|
|
//
|
|
// Definition of different string information block types
|
|
//
|
|
|
|
typedef struct _EFI_HII_SIBT_DUPLICATE_BLOCK {
|
|
EFI_HII_STRING_BLOCK Header;
|
|
EFI_STRING_ID StringId;
|
|
} EFI_HII_SIBT_DUPLICATE_BLOCK;
|
|
|
|
typedef struct _EFI_HII_SIBT_END_BLOCK {
|
|
EFI_HII_STRING_BLOCK Header;
|
|
} EFI_HII_SIBT_END_BLOCK;
|
|
|
|
typedef struct _EFI_HII_SIBT_EXT1_BLOCK {
|
|
EFI_HII_STRING_BLOCK Header;
|
|
UINT8 BlockType2;
|
|
UINT8 Length;
|
|
} EFI_HII_SIBT_EXT1_BLOCK;
|
|
|
|
typedef struct _EFI_HII_SIBT_EXT2_BLOCK {
|
|
EFI_HII_STRING_BLOCK Header;
|
|
UINT8 BlockType2;
|
|
UINT16 Length;
|
|
} EFI_HII_SIBT_EXT2_BLOCK;
|
|
|
|
typedef struct _EFI_HII_SIBT_EXT4_BLOCK {
|
|
EFI_HII_STRING_BLOCK Header;
|
|
UINT8 BlockType2;
|
|
UINT32 Length;
|
|
} EFI_HII_SIBT_EXT4_BLOCK;
|
|
|
|
typedef struct _EFI_HII_SIBT_FONT_BLOCK {
|
|
EFI_HII_SIBT_EXT2_BLOCK Header;
|
|
UINT8 FontId;
|
|
UINT16 FontSize;
|
|
EFI_HII_FONT_STYLE FontStyle;
|
|
CHAR16 FontName[1];
|
|
} EFI_HII_SIBT_FONT_BLOCK;
|
|
|
|
typedef struct _EFI_HII_SIBT_SKIP1_BLOCK {
|
|
EFI_HII_STRING_BLOCK Header;
|
|
UINT8 SkipCount;
|
|
} EFI_HII_SIBT_SKIP1_BLOCK;
|
|
|
|
typedef struct _EFI_HII_SIBT_SKIP2_BLOCK {
|
|
EFI_HII_STRING_BLOCK Header;
|
|
UINT16 SkipCount;
|
|
} EFI_HII_SIBT_SKIP2_BLOCK;
|
|
|
|
typedef struct _EFI_HII_SIBT_STRING_SCSU_BLOCK {
|
|
EFI_HII_STRING_BLOCK Header;
|
|
UINT8 StringText[1];
|
|
} EFI_HII_SIBT_STRING_SCSU_BLOCK;
|
|
|
|
typedef struct _EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK {
|
|
EFI_HII_STRING_BLOCK Header;
|
|
UINT8 FontIdentifier;
|
|
UINT8 StringText[1];
|
|
} EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK;
|
|
|
|
typedef struct _EFI_HII_SIBT_STRINGS_SCSU_BLOCK {
|
|
EFI_HII_STRING_BLOCK Header;
|
|
UINT16 StringCount;
|
|
UINT8 StringText[1];
|
|
} EFI_HII_SIBT_STRINGS_SCSU_BLOCK;
|
|
|
|
typedef struct _EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK {
|
|
EFI_HII_STRING_BLOCK Header;
|
|
UINT8 FontIdentifier;
|
|
UINT16 StringCount;
|
|
UINT8 StringText[1];
|
|
} EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK;
|
|
|
|
typedef struct _EFI_HII_SIBT_STRING_UCS2_BLOCK {
|
|
EFI_HII_STRING_BLOCK Header;
|
|
CHAR16 StringText[1];
|
|
} EFI_HII_SIBT_STRING_UCS2_BLOCK;
|
|
|
|
typedef struct _EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK {
|
|
EFI_HII_STRING_BLOCK Header;
|
|
UINT8 FontIdentifier;
|
|
CHAR16 StringText[1];
|
|
} EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK;
|
|
|
|
typedef struct _EFI_HII_SIBT_STRINGS_UCS2_BLOCK {
|
|
EFI_HII_STRING_BLOCK Header;
|
|
UINT16 StringCount;
|
|
CHAR16 StringText[1];
|
|
} EFI_HII_SIBT_STRINGS_UCS2_BLOCK;
|
|
|
|
typedef struct _EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK {
|
|
EFI_HII_STRING_BLOCK Header;
|
|
UINT8 FontIdentifier;
|
|
UINT16 StringCount;
|
|
CHAR16 StringText[1];
|
|
} EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK;
|
|
|
|
//
|
|
// Definitions for Image Package
|
|
// Section 27.3.7
|
|
//
|
|
|
|
typedef struct _EFI_HII_IMAGE_PACKAGE_HDR {
|
|
EFI_HII_PACKAGE_HEADER Header;
|
|
UINT32 ImageInfoOffset;
|
|
UINT32 PaletteInfoOffset;
|
|
} EFI_HII_IMAGE_PACKAGE_HDR;
|
|
|
|
typedef struct _EFI_HII_IMAGE_BLOCK {
|
|
UINT8 BlockType;
|
|
} EFI_HII_IMAGE_BLOCK;
|
|
|
|
//
|
|
// Value of different image information block types
|
|
//
|
|
#define EFI_HII_IIBT_END 0x00
|
|
#define EFI_HII_IIBT_IMAGE_1BIT 0x10
|
|
#define EFI_HII_IIBT_IMAGE_1BIT_TRANS 0x11
|
|
#define EFI_HII_IIBT_IMAGE_4BIT 0x12
|
|
#define EFI_HII_IIBT_IMAGE_4BIT_TRANS 0x13
|
|
#define EFI_HII_IIBT_IMAGE_8BIT 0x14
|
|
#define EFI_HII_IIBT_IMAGE_8BIT_TRANS 0x15
|
|
#define EFI_HII_IIBT_IMAGE_24BIT 0x16
|
|
#define EFI_HII_IIBT_IMAGE_24BIT_TRANS 0x17
|
|
#define EFI_HII_IIBT_IMAGE_JPEG 0x18
|
|
#define EFI_HII_IIBT_DUPLICATE 0x20
|
|
#define EFI_HII_IIBT_SKIP2 0x21
|
|
#define EFI_HII_IIBT_SKIP1 0x22
|
|
#define EFI_HII_IIBT_EXT1 0x30
|
|
#define EFI_HII_IIBT_EXT2 0x31
|
|
#define EFI_HII_IIBT_EXT4 0x32
|
|
|
|
//
|
|
// Definition of different image information block types
|
|
//
|
|
|
|
typedef struct _EFI_HII_IIBT_END_BLOCK {
|
|
EFI_HII_IMAGE_BLOCK Header;
|
|
} EFI_HII_IIBT_END_BLOCK;
|
|
|
|
typedef struct _EFI_HII_IIBT_EXT1_BLOCK {
|
|
EFI_HII_IMAGE_BLOCK Header;
|
|
UINT8 BlockType2;
|
|
UINT8 Length;
|
|
} EFI_HII_IIBT_EXT1_BLOCK;
|
|
|
|
typedef struct _EFI_HII_IIBT_EXT2_BLOCK {
|
|
EFI_HII_IMAGE_BLOCK Header;
|
|
UINT8 BlockType2;
|
|
UINT16 Length;
|
|
} EFI_HII_IIBT_EXT2_BLOCK;
|
|
|
|
typedef struct _EFI_HII_IIBT_EXT4_BLOCK {
|
|
EFI_HII_IMAGE_BLOCK Header;
|
|
UINT8 BlockType2;
|
|
UINT32 Length;
|
|
} EFI_HII_IIBT_EXT4_BLOCK;
|
|
|
|
typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BASE {
|
|
UINT16 Width;
|
|
UINT16 Height;
|
|
UINT8 Data[1];
|
|
} EFI_HII_IIBT_IMAGE_1BIT_BASE;
|
|
|
|
typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BLOCK {
|
|
EFI_HII_IMAGE_BLOCK Header;
|
|
UINT8 PaletteIndex;
|
|
EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap;
|
|
} EFI_HII_IIBT_IMAGE_1BIT_BLOCK;
|
|
|
|
typedef struct _EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK {
|
|
EFI_HII_IMAGE_BLOCK Header;
|
|
UINT8 PaletteIndex;
|
|
EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap;
|
|
} EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK;
|
|
|
|
typedef struct _EFI_HII_RGB_PIXEL {
|
|
UINT8 b;
|
|
UINT8 g;
|
|
UINT8 r;
|
|
} EFI_HII_RGB_PIXEL;
|
|
|
|
typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BASE {
|
|
UINT16 Width;
|
|
UINT16 Height;
|
|
EFI_HII_RGB_PIXEL Bitmap[1];
|
|
} EFI_HII_IIBT_IMAGE_24BIT_BASE;
|
|
|
|
typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BLOCK {
|
|
EFI_HII_IMAGE_BLOCK Header;
|
|
EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap;
|
|
} EFI_HII_IIBT_IMAGE_24BIT_BLOCK;
|
|
|
|
typedef struct _EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK {
|
|
EFI_HII_IMAGE_BLOCK Header;
|
|
EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap;
|
|
} EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK;
|
|
|
|
typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BASE {
|
|
UINT16 Width;
|
|
UINT16 Height;
|
|
UINT8 Data[1];
|
|
} EFI_HII_IIBT_IMAGE_4BIT_BASE;
|
|
|
|
typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BLOCK {
|
|
EFI_HII_IMAGE_BLOCK Header;
|
|
UINT8 PaletteIndex;
|
|
EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap;
|
|
} EFI_HII_IIBT_IMAGE_4BIT_BLOCK;
|
|
|
|
typedef struct _EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK {
|
|
EFI_HII_IMAGE_BLOCK Header;
|
|
UINT8 PaletteIndex;
|
|
EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap;
|
|
} EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK;
|
|
|
|
typedef struct _EFI_HII_IIBT_IMAGE_8BIT_BASE {
|
|
UINT16 Width;
|
|
UINT16 Height;
|
|
UINT8 Data[1];
|
|
} EFI_HII_IIBT_IMAGE_8BIT_BASE;
|
|
|
|
typedef struct _EFI_HII_IIBT_IMAGE_8BIT_PALETTE_BLOCK {
|
|
EFI_HII_IMAGE_BLOCK Header;
|
|
UINT8 PaletteIndex;
|
|
EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap;
|
|
} EFI_HII_IIBT_IMAGE_8BIT_BLOCK;
|
|
|
|
typedef struct _EFI_HII_IIBT_IMAGE_8BIT_TRANS_BLOCK {
|
|
EFI_HII_IMAGE_BLOCK Header;
|
|
UINT8 PaletteIndex;
|
|
EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap;
|
|
} EFI_HII_IIBT_IMAGE_8BIT_TRAN_BLOCK;
|
|
|
|
typedef struct _EFI_HII_IIBT_DUPLICATE_BLOCK {
|
|
EFI_HII_IMAGE_BLOCK Header;
|
|
EFI_IMAGE_ID ImageId;
|
|
} EFI_HII_IIBT_DUPLICATE_BLOCK;
|
|
|
|
typedef struct _EFI_HII_IIBT_JPEG_BLOCK {
|
|
EFI_HII_IMAGE_BLOCK Header;
|
|
UINT32 Size;
|
|
UINT8 Data[1];
|
|
} EFI_HII_IIBT_JPEG_BLOCK;
|
|
|
|
typedef struct _EFI_HII_IIBT_SKIP1_BLOCK {
|
|
EFI_HII_IMAGE_BLOCK Header;
|
|
UINT8 SkipCount;
|
|
} EFI_HII_IIBT_SKIP1_BLOCK;
|
|
|
|
typedef struct _EFI_HII_IIBT_SKIP2_BLOCK {
|
|
EFI_HII_IMAGE_BLOCK Header;
|
|
UINT16 SkipCount;
|
|
} EFI_HII_IIBT_SKIP2_BLOCK;
|
|
|
|
//
|
|
// Definitions for Palette Information
|
|
//
|
|
|
|
typedef struct _EFI_HII_IMAGE_PALETTE_INFO_HEADER {
|
|
UINT16 PaletteCount;
|
|
} EFI_HII_IMAGE_PALETTE_INFO_HEADER;
|
|
|
|
typedef struct _EFI_HII_IMAGE_PALETTE_INFO {
|
|
UINT16 PaletteSize;
|
|
EFI_HII_RGB_PIXEL PaletteValue[1];
|
|
} EFI_HII_IMAGE_PALETTE_INFO;
|
|
|
|
//
|
|
// Definitions for Forms Package
|
|
// Section 27.3.8
|
|
//
|
|
|
|
///
|
|
/// The Form package is used to carry form-based encoding data.
|
|
///
|
|
typedef struct _EFI_HII_FORM_PACKAGE_HDR {
|
|
EFI_HII_PACKAGE_HEADER Header;
|
|
// EFI_IFR_OP_HEADER OpCodeHeader;
|
|
// More op-codes follow
|
|
} EFI_HII_FORM_PACKAGE_HDR;
|
|
|
|
typedef struct {
|
|
UINT8 Hour;
|
|
UINT8 Minute;
|
|
UINT8 Second;
|
|
} EFI_HII_TIME;
|
|
|
|
typedef struct {
|
|
UINT16 Year;
|
|
UINT8 Month;
|
|
UINT8 Day;
|
|
} EFI_HII_DATE;
|
|
|
|
typedef struct {
|
|
EFI_QUESTION_ID QuestionId;
|
|
EFI_FORM_ID FormId;
|
|
EFI_GUID FormSetGuid;
|
|
EFI_STRING_ID DevicePath;
|
|
} EFI_HII_REF;
|
|
|
|
typedef union {
|
|
UINT8 u8;
|
|
UINT16 u16;
|
|
UINT32 u32;
|
|
UINT64 u64;
|
|
BOOLEAN b;
|
|
EFI_HII_TIME time;
|
|
EFI_HII_DATE date;
|
|
EFI_STRING_ID string; ///< EFI_IFR_TYPE_STRING, EFI_IFR_TYPE_ACTION
|
|
EFI_HII_REF ref; ///< EFI_IFR_TYPE_REF
|
|
// UINT8 buffer[]; ///< EFI_IFR_TYPE_BUFFER
|
|
} EFI_IFR_TYPE_VALUE;
|
|
|
|
//
|
|
// IFR Opcodes
|
|
//
|
|
#define EFI_IFR_FORM_OP 0x01
|
|
#define EFI_IFR_SUBTITLE_OP 0x02
|
|
#define EFI_IFR_TEXT_OP 0x03
|
|
#define EFI_IFR_IMAGE_OP 0x04
|
|
#define EFI_IFR_ONE_OF_OP 0x05
|
|
#define EFI_IFR_CHECKBOX_OP 0x06
|
|
#define EFI_IFR_NUMERIC_OP 0x07
|
|
#define EFI_IFR_PASSWORD_OP 0x08
|
|
#define EFI_IFR_ONE_OF_OPTION_OP 0x09
|
|
#define EFI_IFR_SUPPRESS_IF_OP 0x0A
|
|
#define EFI_IFR_LOCKED_OP 0x0B
|
|
#define EFI_IFR_ACTION_OP 0x0C
|
|
#define EFI_IFR_RESET_BUTTON_OP 0x0D
|
|
#define EFI_IFR_FORM_SET_OP 0x0E
|
|
#define EFI_IFR_REF_OP 0x0F
|
|
#define EFI_IFR_NO_SUBMIT_IF_OP 0x10
|
|
#define EFI_IFR_INCONSISTENT_IF_OP 0x11
|
|
#define EFI_IFR_EQ_ID_VAL_OP 0x12
|
|
#define EFI_IFR_EQ_ID_ID_OP 0x13
|
|
#define EFI_IFR_EQ_ID_VAL_LIST_OP 0x14
|
|
#define EFI_IFR_AND_OP 0x15
|
|
#define EFI_IFR_OR_OP 0x16
|
|
#define EFI_IFR_NOT_OP 0x17
|
|
#define EFI_IFR_RULE_OP 0x18
|
|
#define EFI_IFR_GRAY_OUT_IF_OP 0x19
|
|
#define EFI_IFR_DATE_OP 0x1A
|
|
#define EFI_IFR_TIME_OP 0x1B
|
|
#define EFI_IFR_STRING_OP 0x1C
|
|
#define EFI_IFR_REFRESH_OP 0x1D
|
|
#define EFI_IFR_DISABLE_IF_OP 0x1E
|
|
#define EFI_IFR_ANIMATION_OP 0x1F
|
|
#define EFI_IFR_TO_LOWER_OP 0x20
|
|
#define EFI_IFR_TO_UPPER_OP 0x21
|
|
#define EFI_IFR_MAP_OP 0x22
|
|
#define EFI_IFR_ORDERED_LIST_OP 0x23
|
|
#define EFI_IFR_VARSTORE_OP 0x24
|
|
#define EFI_IFR_VARSTORE_NAME_VALUE_OP 0x25
|
|
#define EFI_IFR_VARSTORE_EFI_OP 0x26
|
|
#define EFI_IFR_VARSTORE_DEVICE_OP 0x27
|
|
#define EFI_IFR_VERSION_OP 0x28
|
|
#define EFI_IFR_END_OP 0x29
|
|
#define EFI_IFR_MATCH_OP 0x2A
|
|
#define EFI_IFR_GET_OP 0x2B
|
|
#define EFI_IFR_SET_OP 0x2C
|
|
#define EFI_IFR_READ_OP 0x2D
|
|
#define EFI_IFR_WRITE_OP 0x2E
|
|
#define EFI_IFR_EQUAL_OP 0x2F
|
|
#define EFI_IFR_NOT_EQUAL_OP 0x30
|
|
#define EFI_IFR_GREATER_THAN_OP 0x31
|
|
#define EFI_IFR_GREATER_EQUAL_OP 0x32
|
|
#define EFI_IFR_LESS_THAN_OP 0x33
|
|
#define EFI_IFR_LESS_EQUAL_OP 0x34
|
|
#define EFI_IFR_BITWISE_AND_OP 0x35
|
|
#define EFI_IFR_BITWISE_OR_OP 0x36
|
|
#define EFI_IFR_BITWISE_NOT_OP 0x37
|
|
#define EFI_IFR_SHIFT_LEFT_OP 0x38
|
|
#define EFI_IFR_SHIFT_RIGHT_OP 0x39
|
|
#define EFI_IFR_ADD_OP 0x3A
|
|
#define EFI_IFR_SUBTRACT_OP 0x3B
|
|
#define EFI_IFR_MULTIPLY_OP 0x3C
|
|
#define EFI_IFR_DIVIDE_OP 0x3D
|
|
#define EFI_IFR_MODULO_OP 0x3E
|
|
#define EFI_IFR_RULE_REF_OP 0x3F
|
|
#define EFI_IFR_QUESTION_REF1_OP 0x40
|
|
#define EFI_IFR_QUESTION_REF2_OP 0x41
|
|
#define EFI_IFR_UINT8_OP 0x42
|
|
#define EFI_IFR_UINT16_OP 0x43
|
|
#define EFI_IFR_UINT32_OP 0x44
|
|
#define EFI_IFR_UINT64_OP 0x45
|
|
#define EFI_IFR_TRUE_OP 0x46
|
|
#define EFI_IFR_FALSE_OP 0x47
|
|
#define EFI_IFR_TO_UINT_OP 0x48
|
|
#define EFI_IFR_TO_STRING_OP 0x49
|
|
#define EFI_IFR_TO_BOOLEAN_OP 0x4A
|
|
#define EFI_IFR_MID_OP 0x4B
|
|
#define EFI_IFR_FIND_OP 0x4C
|
|
#define EFI_IFR_TOKEN_OP 0x4D
|
|
#define EFI_IFR_STRING_REF1_OP 0x4E
|
|
#define EFI_IFR_STRING_REF2_OP 0x4F
|
|
#define EFI_IFR_CONDITIONAL_OP 0x50
|
|
#define EFI_IFR_QUESTION_REF3_OP 0x51
|
|
#define EFI_IFR_ZERO_OP 0x52
|
|
#define EFI_IFR_ONE_OP 0x53
|
|
#define EFI_IFR_ONES_OP 0x54
|
|
#define EFI_IFR_UNDEFINED_OP 0x55
|
|
#define EFI_IFR_LENGTH_OP 0x56
|
|
#define EFI_IFR_DUP_OP 0x57
|
|
#define EFI_IFR_THIS_OP 0x58
|
|
#define EFI_IFR_SPAN_OP 0x59
|
|
#define EFI_IFR_VALUE_OP 0x5A
|
|
#define EFI_IFR_DEFAULT_OP 0x5B
|
|
#define EFI_IFR_DEFAULTSTORE_OP 0x5C
|
|
#define EFI_IFR_FORM_MAP_OP 0x5D
|
|
#define EFI_IFR_CATENATE_OP 0x5E
|
|
#define EFI_IFR_GUID_OP 0x5F
|
|
#define EFI_IFR_SECURITY_OP 0x60
|
|
#define EFI_IFR_MODAL_TAG_OP 0x61
|
|
#define EFI_IFR_REFRESH_ID_OP 0x62
|
|
#define EFI_IFR_WARNING_IF_OP 0x63
|
|
|
|
//
|
|
// Definitions of IFR Standard Headers
|
|
// Section 27.3.8.2
|
|
//
|
|
|
|
typedef struct _EFI_IFR_OP_HEADER {
|
|
UINT8 OpCode;
|
|
UINT8 Length:7;
|
|
UINT8 Scope:1;
|
|
} EFI_IFR_OP_HEADER;
|
|
|
|
typedef struct _EFI_IFR_STATEMENT_HEADER {
|
|
EFI_STRING_ID Prompt;
|
|
EFI_STRING_ID Help;
|
|
} EFI_IFR_STATEMENT_HEADER;
|
|
|
|
typedef struct _EFI_IFR_QUESTION_HEADER {
|
|
EFI_IFR_STATEMENT_HEADER Header;
|
|
EFI_QUESTION_ID QuestionId;
|
|
EFI_VARSTORE_ID VarStoreId;
|
|
union {
|
|
EFI_STRING_ID VarName;
|
|
UINT16 VarOffset;
|
|
} VarStoreInfo;
|
|
UINT8 Flags;
|
|
} EFI_IFR_QUESTION_HEADER;
|
|
|
|
//
|
|
// Flag values of EFI_IFR_QUESTION_HEADER
|
|
//
|
|
#define EFI_IFR_FLAG_READ_ONLY 0x01
|
|
#define EFI_IFR_FLAG_CALLBACK 0x04
|
|
#define EFI_IFR_FLAG_RESET_REQUIRED 0x10
|
|
#define EFI_IFR_FLAG_OPTIONS_ONLY 0x80
|
|
|
|
//
|
|
// Definition for Opcode Reference
|
|
// Section 27.3.8.3
|
|
//
|
|
typedef struct _EFI_IFR_DEFAULTSTORE {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_STRING_ID DefaultName;
|
|
UINT16 DefaultId;
|
|
} EFI_IFR_DEFAULTSTORE;
|
|
|
|
//
|
|
// Default Identifier of default store
|
|
//
|
|
#define EFI_HII_DEFAULT_CLASS_STANDARD 0x0000
|
|
#define EFI_HII_DEFAULT_CLASS_MANUFACTURING 0x0001
|
|
#define EFI_HII_DEFAULT_CLASS_SAFE 0x0002
|
|
#define EFI_HII_DEFAULT_CLASS_PLATFORM_BEGIN 0x4000
|
|
#define EFI_HII_DEFAULT_CLASS_PLATFORM_END 0x7fff
|
|
#define EFI_HII_DEFAULT_CLASS_HARDWARE_BEGIN 0x8000
|
|
#define EFI_HII_DEFAULT_CLASS_HARDWARE_END 0xbfff
|
|
#define EFI_HII_DEFAULT_CLASS_FIRMWARE_BEGIN 0xc000
|
|
#define EFI_HII_DEFAULT_CLASS_FIRMWARE_END 0xffff
|
|
|
|
typedef struct _EFI_IFR_VARSTORE {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_GUID Guid;
|
|
EFI_VARSTORE_ID VarStoreId;
|
|
UINT16 Size;
|
|
UINT8 Name[1];
|
|
} EFI_IFR_VARSTORE;
|
|
|
|
typedef struct _EFI_IFR_VARSTORE_EFI {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_VARSTORE_ID VarStoreId;
|
|
EFI_GUID Guid;
|
|
UINT32 Attributes;
|
|
UINT16 Size;
|
|
UINT8 Name[1];
|
|
} EFI_IFR_VARSTORE_EFI;
|
|
|
|
typedef struct _EFI_IFR_VARSTORE_NAME_VALUE {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_VARSTORE_ID VarStoreId;
|
|
EFI_GUID Guid;
|
|
} EFI_IFR_VARSTORE_NAME_VALUE;
|
|
|
|
typedef struct _EFI_IFR_FORM_SET {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_GUID Guid;
|
|
EFI_STRING_ID FormSetTitle;
|
|
EFI_STRING_ID Help;
|
|
UINT8 Flags;
|
|
// EFI_GUID ClassGuid[];
|
|
} EFI_IFR_FORM_SET;
|
|
|
|
typedef struct _EFI_IFR_END {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_END;
|
|
|
|
typedef struct _EFI_IFR_FORM {
|
|
EFI_IFR_OP_HEADER Header;
|
|
UINT16 FormId;
|
|
EFI_STRING_ID FormTitle;
|
|
} EFI_IFR_FORM;
|
|
|
|
typedef struct _EFI_IFR_IMAGE {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_IMAGE_ID Id;
|
|
} EFI_IFR_IMAGE;
|
|
|
|
typedef struct _EFI_IFR_MODAL_TAG {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_MODAL_TAG;
|
|
|
|
typedef struct _EFI_IFR_LOCKED {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_LOCKED;
|
|
|
|
typedef struct _EFI_IFR_RULE {
|
|
EFI_IFR_OP_HEADER Header;
|
|
UINT8 RuleId;
|
|
} EFI_IFR_RULE;
|
|
|
|
typedef struct _EFI_IFR_DEFAULT {
|
|
EFI_IFR_OP_HEADER Header;
|
|
UINT16 DefaultId;
|
|
UINT8 Type;
|
|
EFI_IFR_TYPE_VALUE Value;
|
|
} EFI_IFR_DEFAULT;
|
|
|
|
typedef struct _EFI_IFR_DEFAULT_2 {
|
|
EFI_IFR_OP_HEADER Header;
|
|
UINT16 DefaultId;
|
|
UINT8 Type;
|
|
} EFI_IFR_DEFAULT_2;
|
|
|
|
typedef struct _EFI_IFR_VALUE {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_VALUE;
|
|
|
|
typedef struct _EFI_IFR_SUBTITLE {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_IFR_STATEMENT_HEADER Statement;
|
|
UINT8 Flags;
|
|
} EFI_IFR_SUBTITLE;
|
|
|
|
#define EFI_IFR_FLAGS_HORIZONTAL 0x01
|
|
|
|
typedef struct _EFI_IFR_CHECKBOX {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_IFR_QUESTION_HEADER Question;
|
|
UINT8 Flags;
|
|
} EFI_IFR_CHECKBOX;
|
|
|
|
#define EFI_IFR_CHECKBOX_DEFAULT 0x01
|
|
#define EFI_IFR_CHECKBOX_DEFAULT_MFG 0x02
|
|
|
|
typedef struct _EFI_IFR_TEXT {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_IFR_STATEMENT_HEADER Statement;
|
|
EFI_STRING_ID TextTwo;
|
|
} EFI_IFR_TEXT;
|
|
|
|
typedef struct _EFI_IFR_REF {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_IFR_QUESTION_HEADER Question;
|
|
EFI_FORM_ID FormId;
|
|
} EFI_IFR_REF;
|
|
|
|
typedef struct _EFI_IFR_REF2 {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_IFR_QUESTION_HEADER Question;
|
|
EFI_FORM_ID FormId;
|
|
EFI_QUESTION_ID QuestionId;
|
|
} EFI_IFR_REF2;
|
|
|
|
typedef struct _EFI_IFR_REF3 {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_IFR_QUESTION_HEADER Question;
|
|
EFI_FORM_ID FormId;
|
|
EFI_QUESTION_ID QuestionId;
|
|
EFI_GUID FormSetId;
|
|
} EFI_IFR_REF3;
|
|
|
|
typedef struct _EFI_IFR_REF4 {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_IFR_QUESTION_HEADER Question;
|
|
EFI_FORM_ID FormId;
|
|
EFI_QUESTION_ID QuestionId;
|
|
EFI_GUID FormSetId;
|
|
EFI_STRING_ID DevicePath;
|
|
} EFI_IFR_REF4;
|
|
|
|
typedef struct _EFI_IFR_REF5 {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_IFR_QUESTION_HEADER Question;
|
|
} EFI_IFR_REF5;
|
|
|
|
typedef struct _EFI_IFR_RESET_BUTTON {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_IFR_STATEMENT_HEADER Statement;
|
|
EFI_DEFAULT_ID DefaultId;
|
|
} EFI_IFR_RESET_BUTTON;
|
|
|
|
typedef struct _EFI_IFR_ACTION {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_IFR_QUESTION_HEADER Question;
|
|
EFI_STRING_ID QuestionConfig;
|
|
} EFI_IFR_ACTION;
|
|
|
|
typedef struct _EFI_IFR_ACTION_1 {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_IFR_QUESTION_HEADER Question;
|
|
} EFI_IFR_ACTION_1;
|
|
|
|
typedef struct _EFI_IFR_DATE {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_IFR_QUESTION_HEADER Question;
|
|
UINT8 Flags;
|
|
} EFI_IFR_DATE;
|
|
|
|
//
|
|
// Flags that describe the behavior of the question.
|
|
//
|
|
#define EFI_QF_DATE_YEAR_SUPPRESS 0x01
|
|
#define EFI_QF_DATE_MONTH_SUPPRESS 0x02
|
|
#define EFI_QF_DATE_DAY_SUPPRESS 0x04
|
|
|
|
#define EFI_QF_DATE_STORAGE 0x30
|
|
#define QF_DATE_STORAGE_NORMAL 0x00
|
|
#define QF_DATE_STORAGE_TIME 0x10
|
|
#define QF_DATE_STORAGE_WAKEUP 0x20
|
|
|
|
typedef union {
|
|
struct {
|
|
UINT8 MinValue;
|
|
UINT8 MaxValue;
|
|
UINT8 Step;
|
|
} u8;
|
|
struct {
|
|
UINT16 MinValue;
|
|
UINT16 MaxValue;
|
|
UINT16 Step;
|
|
} u16;
|
|
struct {
|
|
UINT32 MinValue;
|
|
UINT32 MaxValue;
|
|
UINT32 Step;
|
|
} u32;
|
|
struct {
|
|
UINT64 MinValue;
|
|
UINT64 MaxValue;
|
|
UINT64 Step;
|
|
} u64;
|
|
} MINMAXSTEP_DATA;
|
|
|
|
typedef struct _EFI_IFR_NUMERIC {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_IFR_QUESTION_HEADER Question;
|
|
UINT8 Flags;
|
|
MINMAXSTEP_DATA data;
|
|
} EFI_IFR_NUMERIC;
|
|
|
|
//
|
|
// Flags related to the numeric question
|
|
//
|
|
#define EFI_IFR_NUMERIC_SIZE 0x03
|
|
#define EFI_IFR_NUMERIC_SIZE_1 0x00
|
|
#define EFI_IFR_NUMERIC_SIZE_2 0x01
|
|
#define EFI_IFR_NUMERIC_SIZE_4 0x02
|
|
#define EFI_IFR_NUMERIC_SIZE_8 0x03
|
|
|
|
#define EFI_IFR_DISPLAY 0x30
|
|
#define EFI_IFR_DISPLAY_INT_DEC 0x00
|
|
#define EFI_IFR_DISPLAY_UINT_DEC 0x10
|
|
#define EFI_IFR_DISPLAY_UINT_HEX 0x20
|
|
|
|
typedef struct _EFI_IFR_ONE_OF {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_IFR_QUESTION_HEADER Question;
|
|
UINT8 Flags;
|
|
MINMAXSTEP_DATA data;
|
|
} EFI_IFR_ONE_OF;
|
|
|
|
typedef struct _EFI_IFR_STRING {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_IFR_QUESTION_HEADER Question;
|
|
UINT8 MinSize;
|
|
UINT8 MaxSize;
|
|
UINT8 Flags;
|
|
} EFI_IFR_STRING;
|
|
|
|
#define EFI_IFR_STRING_MULTI_LINE 0x01
|
|
|
|
typedef struct _EFI_IFR_PASSWORD {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_IFR_QUESTION_HEADER Question;
|
|
UINT16 MinSize;
|
|
UINT16 MaxSize;
|
|
} EFI_IFR_PASSWORD;
|
|
|
|
typedef struct _EFI_IFR_ORDERED_LIST {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_IFR_QUESTION_HEADER Question;
|
|
UINT8 MaxContainers;
|
|
UINT8 Flags;
|
|
} EFI_IFR_ORDERED_LIST;
|
|
|
|
#define EFI_IFR_UNIQUE_SET 0x01
|
|
#define EFI_IFR_NO_EMPTY_SET 0x02
|
|
|
|
typedef struct _EFI_IFR_TIME {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_IFR_QUESTION_HEADER Question;
|
|
UINT8 Flags;
|
|
} EFI_IFR_TIME;
|
|
|
|
//
|
|
// A bit-mask that determines which unique settings are active for this opcode.
|
|
//
|
|
#define QF_TIME_HOUR_SUPPRESS 0x01
|
|
#define QF_TIME_MINUTE_SUPPRESS 0x02
|
|
#define QF_TIME_SECOND_SUPPRESS 0x04
|
|
|
|
#define QF_TIME_STORAGE 0x30
|
|
#define QF_TIME_STORAGE_NORMAL 0x00
|
|
#define QF_TIME_STORAGE_TIME 0x10
|
|
#define QF_TIME_STORAGE_WAKEUP 0x20
|
|
|
|
typedef struct _EFI_IFR_DISABLE_IF {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_DISABLE_IF;
|
|
|
|
typedef struct _EFI_IFR_SUPPRESS_IF {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_SUPPRESS_IF;
|
|
|
|
typedef struct _EFI_IFR_GRAY_OUT_IF {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_GRAY_OUT_IF;
|
|
|
|
typedef struct _EFI_IFR_INCONSISTENT_IF {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_STRING_ID Error;
|
|
} EFI_IFR_INCONSISTENT_IF;
|
|
|
|
typedef struct _EFI_IFR_NO_SUBMIT_IF {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_STRING_ID Error;
|
|
} EFI_IFR_NO_SUBMIT_IF;
|
|
|
|
typedef struct _EFI_IFR_WARNING_IF {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_STRING_ID Warning;
|
|
UINT8 TimeOut;
|
|
} EFI_IFR_WARNING_IF;
|
|
|
|
typedef struct _EFI_IFR_REFRESH {
|
|
EFI_IFR_OP_HEADER Header;
|
|
UINT8 RefreshInterval;
|
|
} EFI_IFR_REFRESH;
|
|
|
|
typedef struct _EFI_IFR_VARSTORE_DEVICE {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_STRING_ID DevicePath;
|
|
} EFI_IFR_VARSTORE_DEVICE;
|
|
|
|
typedef struct _EFI_IFR_ONE_OF_OPTION {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_STRING_ID Option;
|
|
UINT8 Flags;
|
|
UINT8 Type;
|
|
EFI_IFR_TYPE_VALUE Value;
|
|
} EFI_IFR_ONE_OF_OPTION;
|
|
|
|
//
|
|
// Types of the option's value.
|
|
//
|
|
#define EFI_IFR_TYPE_NUM_SIZE_8 0x00
|
|
#define EFI_IFR_TYPE_NUM_SIZE_16 0x01
|
|
#define EFI_IFR_TYPE_NUM_SIZE_32 0x02
|
|
#define EFI_IFR_TYPE_NUM_SIZE_64 0x03
|
|
#define EFI_IFR_TYPE_BOOLEAN 0x04
|
|
#define EFI_IFR_TYPE_TIME 0x05
|
|
#define EFI_IFR_TYPE_DATE 0x06
|
|
#define EFI_IFR_TYPE_STRING 0x07
|
|
#define EFI_IFR_TYPE_OTHER 0x08
|
|
#define EFI_IFR_TYPE_UNDEFINED 0x09
|
|
#define EFI_IFR_TYPE_ACTION 0x0A
|
|
#define EFI_IFR_TYPE_BUFFER 0x0B
|
|
#define EFI_IFR_TYPE_REF 0x0C
|
|
|
|
#define EFI_IFR_OPTION_DEFAULT 0x10
|
|
#define EFI_IFR_OPTION_DEFAULT_MFG 0x20
|
|
|
|
typedef struct _EFI_IFR_GUID {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_GUID Guid;
|
|
//Optional Data Follows
|
|
} EFI_IFR_GUID;
|
|
|
|
typedef struct _EFI_IFR_REFRESH_ID {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_GUID RefreshEventGroupId;
|
|
} EFI_IFR_REFRESH_ID;
|
|
|
|
typedef struct _EFI_IFR_DUP {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_DUP;
|
|
|
|
typedef struct _EFI_IFR_EQ_ID_ID {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_QUESTION_ID QuestionId1;
|
|
EFI_QUESTION_ID QuestionId2;
|
|
} EFI_IFR_EQ_ID_ID;
|
|
|
|
typedef struct _EFI_IFR_EQ_ID_VAL {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_QUESTION_ID QuestionId;
|
|
UINT16 Value;
|
|
} EFI_IFR_EQ_ID_VAL;
|
|
|
|
typedef struct _EFI_IFR_EQ_ID_VAL_LIST {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_QUESTION_ID QuestionId;
|
|
UINT16 ListLength;
|
|
UINT16 ValueList[1];
|
|
} EFI_IFR_EQ_ID_VAL_LIST;
|
|
|
|
typedef struct _EFI_IFR_UINT8 {
|
|
EFI_IFR_OP_HEADER Header;
|
|
UINT8 Value;
|
|
} EFI_IFR_UINT8;
|
|
|
|
typedef struct _EFI_IFR_UINT16 {
|
|
EFI_IFR_OP_HEADER Header;
|
|
UINT16 Value;
|
|
} EFI_IFR_UINT16;
|
|
|
|
typedef struct _EFI_IFR_UINT32 {
|
|
EFI_IFR_OP_HEADER Header;
|
|
UINT32 Value;
|
|
} EFI_IFR_UINT32;
|
|
|
|
typedef struct _EFI_IFR_UINT64 {
|
|
EFI_IFR_OP_HEADER Header;
|
|
UINT64 Value;
|
|
} EFI_IFR_UINT64;
|
|
|
|
typedef struct _EFI_IFR_QUESTION_REF1 {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_QUESTION_ID QuestionId;
|
|
} EFI_IFR_QUESTION_REF1;
|
|
|
|
typedef struct _EFI_IFR_QUESTION_REF2 {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_QUESTION_REF2;
|
|
|
|
typedef struct _EFI_IFR_QUESTION_REF3 {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_QUESTION_REF3;
|
|
|
|
typedef struct _EFI_IFR_QUESTION_REF3_2 {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_STRING_ID DevicePath;
|
|
} EFI_IFR_QUESTION_REF3_2;
|
|
|
|
typedef struct _EFI_IFR_QUESTION_REF3_3 {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_STRING_ID DevicePath;
|
|
EFI_GUID Guid;
|
|
} EFI_IFR_QUESTION_REF3_3;
|
|
|
|
typedef struct _EFI_IFR_RULE_REF {
|
|
EFI_IFR_OP_HEADER Header;
|
|
UINT8 RuleId;
|
|
} EFI_IFR_RULE_REF;
|
|
|
|
typedef struct _EFI_IFR_STRING_REF1 {
|
|
EFI_IFR_OP_HEADER Header;
|
|
EFI_STRING_ID StringId;
|
|
} EFI_IFR_STRING_REF1;
|
|
|
|
typedef struct _EFI_IFR_STRING_REF2 {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_STRING_REF2;
|
|
|
|
typedef struct _EFI_IFR_THIS {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_THIS;
|
|
|
|
typedef struct _EFI_IFR_TRUE {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_TRUE;
|
|
|
|
typedef struct _EFI_IFR_FALSE {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_FALSE;
|
|
|
|
typedef struct _EFI_IFR_ONE {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_ONE;
|
|
|
|
typedef struct _EFI_IFR_ONES {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_ONES;
|
|
|
|
typedef struct _EFI_IFR_ZERO {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_ZERO;
|
|
|
|
typedef struct _EFI_IFR_UNDEFINED {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_UNDEFINED;
|
|
|
|
typedef struct _EFI_IFR_VERSION {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_VERSION;
|
|
|
|
typedef struct _EFI_IFR_LENGTH {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_LENGTH;
|
|
|
|
typedef struct _EFI_IFR_NOT {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_NOT;
|
|
|
|
typedef struct _EFI_IFR_BITWISE_NOT {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_BITWISE_NOT;
|
|
|
|
typedef struct _EFI_IFR_TO_BOOLEAN {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_TO_BOOLEAN;
|
|
|
|
///
|
|
/// For EFI_IFR_TO_STRING, when converting from
|
|
/// unsigned integers, these flags control the format:
|
|
/// 0 = unsigned decimal.
|
|
/// 1 = signed decimal.
|
|
/// 2 = hexadecimal (lower-case alpha).
|
|
/// 3 = hexadecimal (upper-case alpha).
|
|
///@{
|
|
#define EFI_IFR_STRING_UNSIGNED_DEC 0
|
|
#define EFI_IFR_STRING_SIGNED_DEC 1
|
|
#define EFI_IFR_STRING_LOWERCASE_HEX 2
|
|
#define EFI_IFR_STRING_UPPERCASE_HEX 3
|
|
///@}
|
|
|
|
///
|
|
/// When converting from a buffer, these flags control the format:
|
|
/// 0 = ASCII.
|
|
/// 8 = Unicode.
|
|
///@{
|
|
#define EFI_IFR_STRING_ASCII 0
|
|
#define EFI_IFR_STRING_UNICODE 8
|
|
///@}
|
|
|
|
typedef struct _EFI_IFR_TO_STRING {
|
|
EFI_IFR_OP_HEADER Header;
|
|
UINT8 Format;
|
|
} EFI_IFR_TO_STRING;
|
|
|
|
typedef struct _EFI_IFR_TO_UINT {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_TO_UINT;
|
|
|
|
typedef struct _EFI_IFR_TO_UPPER {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_TO_UPPER;
|
|
|
|
typedef struct _EFI_IFR_TO_LOWER {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_TO_LOWER;
|
|
|
|
typedef struct _EFI_IFR_ADD {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_ADD;
|
|
|
|
typedef struct _EFI_IFR_AND {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_AND;
|
|
|
|
typedef struct _EFI_IFR_BITWISE_AND {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_BITWISE_AND;
|
|
|
|
typedef struct _EFI_IFR_BITWISE_OR {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_BITWISE_OR;
|
|
|
|
typedef struct _EFI_IFR_CATENATE {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_CATENATE;
|
|
|
|
typedef struct _EFI_IFR_DIVIDE {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_DIVIDE;
|
|
|
|
typedef struct _EFI_IFR_EQUAL {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_EQUAL;
|
|
|
|
typedef struct _EFI_IFR_GREATER_EQUAL {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_GREATER_EQUAL;
|
|
|
|
typedef struct _EFI_IFR_GREATER_THAN {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_GREATER_THAN;
|
|
|
|
typedef struct _EFI_IFR_LESS_EQUAL {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_LESS_EQUAL;
|
|
|
|
typedef struct _EFI_IFR_LESS_THAN {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_LESS_THAN;
|
|
|
|
typedef struct _EFI_IFR_MATCH {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_MATCH;
|
|
|
|
typedef struct _EFI_IFR_MULTIPLY {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_MULTIPLY;
|
|
|
|
typedef struct _EFI_IFR_MODULO {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_MODULO;
|
|
|
|
typedef struct _EFI_IFR_NOT_EQUAL {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_NOT_EQUAL;
|
|
|
|
typedef struct _EFI_IFR_OR {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_OR;
|
|
|
|
typedef struct _EFI_IFR_SHIFT_LEFT {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_SHIFT_LEFT;
|
|
|
|
typedef struct _EFI_IFR_SHIFT_RIGHT {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_SHIFT_RIGHT;
|
|
|
|
typedef struct _EFI_IFR_SUBTRACT {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_SUBTRACT;
|
|
|
|
typedef struct _EFI_IFR_CONDITIONAL {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_CONDITIONAL;
|
|
|
|
//
|
|
// Flags governing the matching criteria of EFI_IFR_FIND
|
|
//
|
|
#define EFI_IFR_FF_CASE_SENSITIVE 0x00
|
|
#define EFI_IFR_FF_CASE_INSENSITIVE 0x01
|
|
|
|
typedef struct _EFI_IFR_FIND {
|
|
EFI_IFR_OP_HEADER Header;
|
|
UINT8 Format;
|
|
} EFI_IFR_FIND;
|
|
|
|
typedef struct _EFI_IFR_MID {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_MID;
|
|
|
|
typedef struct _EFI_IFR_TOKEN {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_TOKEN;
|
|
|
|
//
|
|
// Flags specifying whether to find the first matching string
|
|
// or the first non-matching string.
|
|
//
|
|
#define EFI_IFR_FLAGS_FIRST_MATCHING 0x00
|
|
#define EFI_IFR_FLAGS_FIRST_NON_MATCHING 0x01
|
|
|
|
typedef struct _EFI_IFR_SPAN {
|
|
EFI_IFR_OP_HEADER Header;
|
|
UINT8 Flags;
|
|
} EFI_IFR_SPAN;
|
|
|
|
typedef struct _EFI_IFR_SECURITY {
|
|
///
|
|
/// Standard opcode header, where Header.Op = EFI_IFR_SECURITY_OP.
|
|
///
|
|
EFI_IFR_OP_HEADER Header;
|
|
///
|
|
/// Security permission level.
|
|
///
|
|
EFI_GUID Permissions;
|
|
} EFI_IFR_SECURITY;
|
|
|
|
typedef struct _EFI_IFR_FORM_MAP_METHOD {
|
|
///
|
|
/// The string identifier which provides the human-readable name of
|
|
/// the configuration method for this standards map form.
|
|
///
|
|
EFI_STRING_ID MethodTitle;
|
|
///
|
|
/// Identifier which uniquely specifies the configuration methods
|
|
/// associated with this standards map form.
|
|
///
|
|
EFI_GUID MethodIdentifier;
|
|
} EFI_IFR_FORM_MAP_METHOD;
|
|
|
|
typedef struct _EFI_IFR_FORM_MAP {
|
|
///
|
|
/// The sequence that defines the type of opcode as well as the length
|
|
/// of the opcode being defined. Header.OpCode = EFI_IFR_FORM_MAP_OP.
|
|
///
|
|
EFI_IFR_OP_HEADER Header;
|
|
///
|
|
/// The unique identifier for this particular form.
|
|
///
|
|
EFI_FORM_ID FormId;
|
|
///
|
|
/// One or more configuration method's name and unique identifier.
|
|
///
|
|
// EFI_IFR_FORM_MAP_METHOD Methods[];
|
|
} EFI_IFR_FORM_MAP;
|
|
|
|
typedef struct _EFI_IFR_SET {
|
|
///
|
|
/// The sequence that defines the type of opcode as well as the length
|
|
/// of the opcode being defined. Header.OpCode = EFI_IFR_SET_OP.
|
|
///
|
|
EFI_IFR_OP_HEADER Header;
|
|
///
|
|
/// Specifies the identifier of a previously declared variable store to
|
|
/// use when storing the question's value.
|
|
///
|
|
EFI_VARSTORE_ID VarStoreId;
|
|
union {
|
|
///
|
|
/// A 16-bit Buffer Storage offset.
|
|
///
|
|
EFI_STRING_ID VarName;
|
|
///
|
|
/// A Name Value or EFI Variable name (VarName).
|
|
///
|
|
UINT16 VarOffset;
|
|
} VarStoreInfo;
|
|
///
|
|
/// Specifies the type used for storage.
|
|
///
|
|
UINT8 VarStoreType;
|
|
} EFI_IFR_SET;
|
|
|
|
typedef struct _EFI_IFR_GET {
|
|
///
|
|
/// The sequence that defines the type of opcode as well as the length
|
|
/// of the opcode being defined. Header.OpCode = EFI_IFR_GET_OP.
|
|
///
|
|
EFI_IFR_OP_HEADER Header;
|
|
///
|
|
/// Specifies the identifier of a previously declared variable store to
|
|
/// use when retrieving the value.
|
|
///
|
|
EFI_VARSTORE_ID VarStoreId;
|
|
union {
|
|
///
|
|
/// A 16-bit Buffer Storage offset.
|
|
///
|
|
EFI_STRING_ID VarName;
|
|
///
|
|
/// A Name Value or EFI Variable name (VarName).
|
|
///
|
|
UINT16 VarOffset;
|
|
} VarStoreInfo;
|
|
///
|
|
/// Specifies the type used for storage.
|
|
///
|
|
UINT8 VarStoreType;
|
|
} EFI_IFR_GET;
|
|
|
|
typedef struct _EFI_IFR_READ {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_READ;
|
|
|
|
typedef struct _EFI_IFR_WRITE {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_WRITE;
|
|
|
|
typedef struct _EFI_IFR_MAP {
|
|
EFI_IFR_OP_HEADER Header;
|
|
} EFI_IFR_MAP;
|
|
//
|
|
// Definitions for Keyboard Package
|
|
// Releated definitions are in Section of EFI_HII_DATABASE_PROTOCOL
|
|
//
|
|
|
|
///
|
|
/// Each enumeration values maps a physical key on a keyboard.
|
|
///
|
|
typedef enum {
|
|
EfiKeyLCtrl,
|
|
EfiKeyA0,
|
|
EfiKeyLAlt,
|
|
EfiKeySpaceBar,
|
|
EfiKeyA2,
|
|
EfiKeyA3,
|
|
EfiKeyA4,
|
|
EfiKeyRCtrl,
|
|
EfiKeyLeftArrow,
|
|
EfiKeyDownArrow,
|
|
EfiKeyRightArrow,
|
|
EfiKeyZero,
|
|
EfiKeyPeriod,
|
|
EfiKeyEnter,
|
|
EfiKeyLShift,
|
|
EfiKeyB0,
|
|
EfiKeyB1,
|
|
EfiKeyB2,
|
|
EfiKeyB3,
|
|
EfiKeyB4,
|
|
EfiKeyB5,
|
|
EfiKeyB6,
|
|
EfiKeyB7,
|
|
EfiKeyB8,
|
|
EfiKeyB9,
|
|
EfiKeyB10,
|
|
EfiKeyRShift,
|
|
EfiKeyUpArrow,
|
|
EfiKeyOne,
|
|
EfiKeyTwo,
|
|
EfiKeyThree,
|
|
EfiKeyCapsLock,
|
|
EfiKeyC1,
|
|
EfiKeyC2,
|
|
EfiKeyC3,
|
|
EfiKeyC4,
|
|
EfiKeyC5,
|
|
EfiKeyC6,
|
|
EfiKeyC7,
|
|
EfiKeyC8,
|
|
EfiKeyC9,
|
|
EfiKeyC10,
|
|
EfiKeyC11,
|
|
EfiKeyC12,
|
|
EfiKeyFour,
|
|
EfiKeyFive,
|
|
EfiKeySix,
|
|
EfiKeyPlus,
|
|
EfiKeyTab,
|
|
EfiKeyD1,
|
|
EfiKeyD2,
|
|
EfiKeyD3,
|
|
EfiKeyD4,
|
|
EfiKeyD5,
|
|
EfiKeyD6,
|
|
EfiKeyD7,
|
|
EfiKeyD8,
|
|
EfiKeyD9,
|
|
EfiKeyD10,
|
|
EfiKeyD11,
|
|
EfiKeyD12,
|
|
EfiKeyD13,
|
|
EfiKeyDel,
|
|
EfiKeyEnd,
|
|
EfiKeyPgDn,
|
|
EfiKeySeven,
|
|
EfiKeyEight,
|
|
EfiKeyNine,
|
|
EfiKeyE0,
|
|
EfiKeyE1,
|
|
EfiKeyE2,
|
|
EfiKeyE3,
|
|
EfiKeyE4,
|
|
EfiKeyE5,
|
|
EfiKeyE6,
|
|
EfiKeyE7,
|
|
EfiKeyE8,
|
|
EfiKeyE9,
|
|
EfiKeyE10,
|
|
EfiKeyE11,
|
|
EfiKeyE12,
|
|
EfiKeyBackSpace,
|
|
EfiKeyIns,
|
|
EfiKeyHome,
|
|
EfiKeyPgUp,
|
|
EfiKeyNLck,
|
|
EfiKeySlash,
|
|
EfiKeyAsterisk,
|
|
EfiKeyMinus,
|
|
EfiKeyEsc,
|
|
EfiKeyF1,
|
|
EfiKeyF2,
|
|
EfiKeyF3,
|
|
EfiKeyF4,
|
|
EfiKeyF5,
|
|
EfiKeyF6,
|
|
EfiKeyF7,
|
|
EfiKeyF8,
|
|
EfiKeyF9,
|
|
EfiKeyF10,
|
|
EfiKeyF11,
|
|
EfiKeyF12,
|
|
EfiKeyPrint,
|
|
EfiKeySLck,
|
|
EfiKeyPause
|
|
} EFI_KEY;
|
|
|
|
typedef struct {
|
|
///
|
|
/// Used to describe a physical key on a keyboard.
|
|
///
|
|
EFI_KEY Key;
|
|
///
|
|
/// Unicode character code for the Key.
|
|
///
|
|
CHAR16 Unicode;
|
|
///
|
|
/// Unicode character code for the key with the shift key being held down.
|
|
///
|
|
CHAR16 ShiftedUnicode;
|
|
///
|
|
/// Unicode character code for the key with the Alt-GR being held down.
|
|
///
|
|
CHAR16 AltGrUnicode;
|
|
///
|
|
/// Unicode character code for the key with the Alt-GR and shift keys being held down.
|
|
///
|
|
CHAR16 ShiftedAltGrUnicode;
|
|
///
|
|
/// Modifier keys are defined to allow for special functionality that is not necessarily
|
|
/// accomplished by a printable character. Many of these modifier keys are flags to toggle
|
|
/// certain state bits on and off inside of a keyboard driver.
|
|
///
|
|
UINT16 Modifier;
|
|
UINT16 AffectedAttribute;
|
|
} EFI_KEY_DESCRIPTOR;
|
|
|
|
///
|
|
/// A key which is affected by all the standard shift modifiers.
|
|
/// Most keys would be expected to have this bit active.
|
|
///
|
|
#define EFI_AFFECTED_BY_STANDARD_SHIFT 0x0001
|
|
|
|
///
|
|
/// This key is affected by the caps lock so that if a keyboard driver
|
|
/// would need to disambiguate between a key which had a "1" defined
|
|
/// versus an "a" character. Having this bit turned on would tell
|
|
/// the keyboard driver to use the appropriate shifted state or not.
|
|
///
|
|
#define EFI_AFFECTED_BY_CAPS_LOCK 0x0002
|
|
|
|
///
|
|
/// Similar to the case of CAPS lock, if this bit is active, the key
|
|
/// is affected by the num lock being turned on.
|
|
///
|
|
#define EFI_AFFECTED_BY_NUM_LOCK 0x0004
|
|
|
|
typedef struct {
|
|
UINT16 LayoutLength;
|
|
EFI_GUID Guid;
|
|
UINT32 LayoutDescriptorStringOffset;
|
|
UINT8 DescriptorCount;
|
|
// EFI_KEY_DESCRIPTOR Descriptors[];
|
|
} EFI_HII_KEYBOARD_LAYOUT;
|
|
|
|
typedef struct {
|
|
EFI_HII_PACKAGE_HEADER Header;
|
|
UINT16 LayoutCount;
|
|
// EFI_HII_KEYBOARD_LAYOUT Layout[];
|
|
} EFI_HII_KEYBOARD_PACKAGE_HDR;
|
|
|
|
//
|
|
// Modifier values
|
|
//
|
|
#define EFI_NULL_MODIFIER 0x0000
|
|
#define EFI_LEFT_CONTROL_MODIFIER 0x0001
|
|
#define EFI_RIGHT_CONTROL_MODIFIER 0x0002
|
|
#define EFI_LEFT_ALT_MODIFIER 0x0003
|
|
#define EFI_RIGHT_ALT_MODIFIER 0x0004
|
|
#define EFI_ALT_GR_MODIFIER 0x0005
|
|
#define EFI_INSERT_MODIFIER 0x0006
|
|
#define EFI_DELETE_MODIFIER 0x0007
|
|
#define EFI_PAGE_DOWN_MODIFIER 0x0008
|
|
#define EFI_PAGE_UP_MODIFIER 0x0009
|
|
#define EFI_HOME_MODIFIER 0x000A
|
|
#define EFI_END_MODIFIER 0x000B
|
|
#define EFI_LEFT_SHIFT_MODIFIER 0x000C
|
|
#define EFI_RIGHT_SHIFT_MODIFIER 0x000D
|
|
#define EFI_CAPS_LOCK_MODIFIER 0x000E
|
|
#define EFI_NUM_LOCK_MODIFIER 0x000F
|
|
#define EFI_LEFT_ARROW_MODIFIER 0x0010
|
|
#define EFI_RIGHT_ARROW_MODIFIER 0x0011
|
|
#define EFI_DOWN_ARROW_MODIFIER 0x0012
|
|
#define EFI_UP_ARROW_MODIFIER 0x0013
|
|
#define EFI_NS_KEY_MODIFIER 0x0014
|
|
#define EFI_NS_KEY_DEPENDENCY_MODIFIER 0x0015
|
|
#define EFI_FUNCTION_KEY_ONE_MODIFIER 0x0016
|
|
#define EFI_FUNCTION_KEY_TWO_MODIFIER 0x0017
|
|
#define EFI_FUNCTION_KEY_THREE_MODIFIER 0x0018
|
|
#define EFI_FUNCTION_KEY_FOUR_MODIFIER 0x0019
|
|
#define EFI_FUNCTION_KEY_FIVE_MODIFIER 0x001A
|
|
#define EFI_FUNCTION_KEY_SIX_MODIFIER 0x001B
|
|
#define EFI_FUNCTION_KEY_SEVEN_MODIFIER 0x001C
|
|
#define EFI_FUNCTION_KEY_EIGHT_MODIFIER 0x001D
|
|
#define EFI_FUNCTION_KEY_NINE_MODIFIER 0x001E
|
|
#define EFI_FUNCTION_KEY_TEN_MODIFIER 0x001F
|
|
#define EFI_FUNCTION_KEY_ELEVEN_MODIFIER 0x0020
|
|
#define EFI_FUNCTION_KEY_TWELVE_MODIFIER 0x0021
|
|
|
|
//
|
|
// Keys that have multiple control functions based on modifier
|
|
// settings are handled in the keyboard driver implementation.
|
|
// For instance, PRINT_KEY might have a modifier held down and
|
|
// is still a nonprinting character, but might have an alternate
|
|
// control function like SYSREQUEST
|
|
//
|
|
#define EFI_PRINT_MODIFIER 0x0022
|
|
#define EFI_SYS_REQUEST_MODIFIER 0x0023
|
|
#define EFI_SCROLL_LOCK_MODIFIER 0x0024
|
|
#define EFI_PAUSE_MODIFIER 0x0025
|
|
#define EFI_BREAK_MODIFIER 0x0026
|
|
|
|
#define EFI_LEFT_LOGO_MODIFIER 0x0027
|
|
#define EFI_RIGHT_LOGO_MODIFIER 0x0028
|
|
#define EFI_MENU_MODIFIER 0x0029
|
|
|
|
///
|
|
/// Animation IFR opcode
|
|
///
|
|
typedef struct _EFI_IFR_ANIMATION {
|
|
///
|
|
/// Standard opcode header, where Header.OpCode is
|
|
/// EFI_IFR_ANIMATION_OP.
|
|
///
|
|
EFI_IFR_OP_HEADER Header;
|
|
///
|
|
/// Animation identifier in the HII database.
|
|
///
|
|
EFI_ANIMATION_ID Id;
|
|
} EFI_IFR_ANIMATION;
|
|
|
|
///
|
|
/// HII animation package header.
|
|
///
|
|
typedef struct _EFI_HII_ANIMATION_PACKAGE_HDR {
|
|
///
|
|
/// Standard package header, where Header.Type = EFI_HII_PACKAGE_ANIMATIONS.
|
|
///
|
|
EFI_HII_PACKAGE_HEADER Header;
|
|
///
|
|
/// Offset, relative to this header, of the animation information. If
|
|
/// this is zero, then there are no animation sequences in the package.
|
|
///
|
|
UINT32 AnimationInfoOffset;
|
|
} EFI_HII_ANIMATION_PACKAGE_HDR;
|
|
|
|
///
|
|
/// Animation information is encoded as a series of blocks,
|
|
/// with each block prefixed by a single byte header EFI_HII_ANIMATION_BLOCK.
|
|
///
|
|
typedef struct _EFI_HII_ANIMATION_BLOCK {
|
|
UINT8 BlockType;
|
|
//UINT8 BlockBody[];
|
|
} EFI_HII_ANIMATION_BLOCK;
|
|
|
|
///
|
|
/// Animation block types.
|
|
///
|
|
#define EFI_HII_AIBT_END 0x00
|
|
#define EFI_HII_AIBT_OVERLAY_IMAGES 0x10
|
|
#define EFI_HII_AIBT_CLEAR_IMAGES 0x11
|
|
#define EFI_HII_AIBT_RESTORE_SCRN 0x12
|
|
#define EFI_HII_AIBT_OVERLAY_IMAGES_LOOP 0x18
|
|
#define EFI_HII_AIBT_CLEAR_IMAGES_LOOP 0x19
|
|
#define EFI_HII_AIBT_RESTORE_SCRN_LOOP 0x1A
|
|
#define EFI_HII_AIBT_DUPLICATE 0x20
|
|
#define EFI_HII_AIBT_SKIP2 0x21
|
|
#define EFI_HII_AIBT_SKIP1 0x22
|
|
#define EFI_HII_AIBT_EXT1 0x30
|
|
#define EFI_HII_AIBT_EXT2 0x31
|
|
#define EFI_HII_AIBT_EXT4 0x32
|
|
|
|
///
|
|
/// Extended block headers used for variable sized animation records
|
|
/// which need an explicit length.
|
|
///
|
|
|
|
typedef struct _EFI_HII_AIBT_EXT1_BLOCK {
|
|
///
|
|
/// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT1.
|
|
///
|
|
EFI_HII_ANIMATION_BLOCK Header;
|
|
///
|
|
/// The block type.
|
|
///
|
|
UINT8 BlockType2;
|
|
///
|
|
/// Size of the animation block, in bytes, including the animation block header.
|
|
///
|
|
UINT8 Length;
|
|
} EFI_HII_AIBT_EXT1_BLOCK;
|
|
|
|
typedef struct _EFI_HII_AIBT_EXT2_BLOCK {
|
|
///
|
|
/// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT2.
|
|
///
|
|
EFI_HII_ANIMATION_BLOCK Header;
|
|
///
|
|
/// The block type
|
|
///
|
|
UINT8 BlockType2;
|
|
///
|
|
/// Size of the animation block, in bytes, including the animation block header.
|
|
///
|
|
UINT16 Length;
|
|
} EFI_HII_AIBT_EXT2_BLOCK;
|
|
|
|
typedef struct _EFI_HII_AIBT_EXT4_BLOCK {
|
|
///
|
|
/// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT4.
|
|
///
|
|
EFI_HII_ANIMATION_BLOCK Header;
|
|
///
|
|
/// The block type
|
|
///
|
|
UINT8 BlockType2;
|
|
///
|
|
/// Size of the animation block, in bytes, including the animation block header.
|
|
///
|
|
UINT32 Length;
|
|
} EFI_HII_AIBT_EXT4_BLOCK;
|
|
|
|
typedef struct _EFI_HII_ANIMATION_CELL {
|
|
///
|
|
/// The X offset from the upper left hand corner of the logical
|
|
/// window to position the indexed image.
|
|
///
|
|
UINT16 OffsetX;
|
|
///
|
|
/// The Y offset from the upper left hand corner of the logical
|
|
/// window to position the indexed image.
|
|
///
|
|
UINT16 OffsetY;
|
|
///
|
|
/// The image to display at the specified offset from the upper left
|
|
/// hand corner of the logical window.
|
|
///
|
|
EFI_IMAGE_ID ImageId;
|
|
///
|
|
/// The number of milliseconds to delay after displaying the indexed
|
|
/// image and before continuing on to the next linked image. If value
|
|
/// is zero, no delay.
|
|
///
|
|
UINT16 Delay;
|
|
} EFI_HII_ANIMATION_CELL;
|
|
|
|
///
|
|
/// An animation block to describe an animation sequence that does not cycle, and
|
|
/// where one image is simply displayed over the previous image.
|
|
///
|
|
typedef struct _EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK {
|
|
///
|
|
/// This is image that is to be reference by the image protocols, if the
|
|
/// animation function is not supported or disabled. This image can
|
|
/// be one particular image from the animation sequence (if any one
|
|
/// of the animation frames has a complete image) or an alternate
|
|
/// image that can be displayed alone. If the value is zero, no image
|
|
/// is displayed.
|
|
///
|
|
EFI_IMAGE_ID DftImageId;
|
|
///
|
|
/// The overall width of the set of images (logical window width).
|
|
///
|
|
UINT16 Width;
|
|
///
|
|
/// The overall height of the set of images (logical window height).
|
|
///
|
|
UINT16 Height;
|
|
///
|
|
/// The number of EFI_HII_ANIMATION_CELL contained in the
|
|
/// animation sequence.
|
|
///
|
|
UINT16 CellCount;
|
|
///
|
|
/// An array of CellCount animation cells.
|
|
///
|
|
EFI_HII_ANIMATION_CELL AnimationCell[1];
|
|
} EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK;
|
|
|
|
///
|
|
/// An animation block to describe an animation sequence that does not cycle,
|
|
/// and where the logical window is cleared to the specified color before
|
|
/// the next image is displayed.
|
|
///
|
|
typedef struct _EFI_HII_AIBT_CLEAR_IMAGES_BLOCK {
|
|
///
|
|
/// This is image that is to be reference by the image protocols, if the
|
|
/// animation function is not supported or disabled. This image can
|
|
/// be one particular image from the animation sequence (if any one
|
|
/// of the animation frames has a complete image) or an alternate
|
|
/// image that can be displayed alone. If the value is zero, no image
|
|
/// is displayed.
|
|
///
|
|
EFI_IMAGE_ID DftImageId;
|
|
///
|
|
/// The overall width of the set of images (logical window width).
|
|
///
|
|
UINT16 Width;
|
|
///
|
|
/// The overall height of the set of images (logical window height).
|
|
///
|
|
UINT16 Height;
|
|
///
|
|
/// The number of EFI_HII_ANIMATION_CELL contained in the
|
|
/// animation sequence.
|
|
///
|
|
UINT16 CellCount;
|
|
///
|
|
/// The color to clear the logical window to before displaying the
|
|
/// indexed image.
|
|
///
|
|
EFI_HII_RGB_PIXEL BackgndColor;
|
|
///
|
|
/// An array of CellCount animation cells.
|
|
///
|
|
EFI_HII_ANIMATION_CELL AnimationCell[1];
|
|
} EFI_HII_AIBT_CLEAR_IMAGES_BLOCK;
|
|
|
|
///
|
|
/// An animation block to describe an animation sequence that does not cycle,
|
|
/// and where the screen is restored to the original state before the next
|
|
/// image is displayed.
|
|
///
|
|
typedef struct _EFI_HII_AIBT_RESTORE_SCRN_BLOCK {
|
|
///
|
|
/// This is image that is to be reference by the image protocols, if the
|
|
/// animation function is not supported or disabled. This image can
|
|
/// be one particular image from the animation sequence (if any one
|
|
/// of the animation frames has a complete image) or an alternate
|
|
/// image that can be displayed alone. If the value is zero, no image
|
|
/// is displayed.
|
|
///
|
|
EFI_IMAGE_ID DftImageId;
|
|
///
|
|
/// The overall width of the set of images (logical window width).
|
|
///
|
|
UINT16 Width;
|
|
///
|
|
/// The overall height of the set of images (logical window height).
|
|
///
|
|
UINT16 Height;
|
|
///
|
|
/// The number of EFI_HII_ANIMATION_CELL contained in the
|
|
/// animation sequence.
|
|
///
|
|
UINT16 CellCount;
|
|
///
|
|
/// An array of CellCount animation cells.
|
|
///
|
|
EFI_HII_ANIMATION_CELL AnimationCell[1];
|
|
} EFI_HII_AIBT_RESTORE_SCRN_BLOCK;
|
|
|
|
///
|
|
/// An animation block to describe an animation sequence that continuously cycles,
|
|
/// and where one image is simply displayed over the previous image.
|
|
///
|
|
typedef EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK EFI_HII_AIBT_OVERLAY_IMAGES_LOOP_BLOCK;
|
|
|
|
///
|
|
/// An animation block to describe an animation sequence that continuously cycles,
|
|
/// and where the logical window is cleared to the specified color before
|
|
/// the next image is displayed.
|
|
///
|
|
typedef EFI_HII_AIBT_CLEAR_IMAGES_BLOCK EFI_HII_AIBT_CLEAR_IMAGES_LOOP_BLOCK;
|
|
|
|
///
|
|
/// An animation block to describe an animation sequence that continuously cycles,
|
|
/// and where the screen is restored to the original state before
|
|
/// the next image is displayed.
|
|
///
|
|
typedef EFI_HII_AIBT_RESTORE_SCRN_BLOCK EFI_HII_AIBT_RESTORE_SCRN_LOOP_BLOCK;
|
|
|
|
///
|
|
/// Assigns a new character value to a previously defined animation sequence.
|
|
///
|
|
typedef struct _EFI_HII_AIBT_DUPLICATE_BLOCK {
|
|
///
|
|
/// The previously defined animation ID with the exact same
|
|
/// animation information.
|
|
///
|
|
EFI_ANIMATION_ID AnimationId;
|
|
} EFI_HII_AIBT_DUPLICATE_BLOCK;
|
|
|
|
///
|
|
/// Skips animation IDs.
|
|
///
|
|
typedef struct _EFI_HII_AIBT_SKIP1_BLOCK {
|
|
///
|
|
/// The unsigned 8-bit value to add to AnimationIdCurrent.
|
|
///
|
|
UINT8 SkipCount;
|
|
} EFI_HII_AIBT_SKIP1_BLOCK;
|
|
|
|
///
|
|
/// Skips animation IDs.
|
|
///
|
|
typedef struct _EFI_HII_AIBT_SKIP2_BLOCK {
|
|
///
|
|
/// The unsigned 16-bit value to add to AnimationIdCurrent.
|
|
///
|
|
UINT16 SkipCount;
|
|
} EFI_HII_AIBT_SKIP2_BLOCK;
|
|
|
|
#pragma pack()
|
|
|
|
|
|
|
|
///
|
|
/// References to string tokens must use this macro to enable scanning for
|
|
/// token usages.
|
|
///
|
|
///
|
|
/// STRING_TOKEN is not defined in UEFI specification. But it is placed
|
|
/// here for the easy access by C files and VFR source files.
|
|
///
|
|
#define STRING_TOKEN(t) t
|
|
|
|
#endif
|