REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdePkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
		
			
				
	
	
		
			2127 lines
		
	
	
		
			61 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			2127 lines
		
	
	
		
			61 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 - 2018, Intel Corporation. All rights reserved.<BR>
 | |
| (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
 | |
| SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
|   @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_GLYPH_VARIABILITY  0x14
 | |
| #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_VARIABILITY_BLOCK {
 | |
|   EFI_HII_GLYPH_BLOCK    Header;
 | |
|   EFI_HII_GLYPH_INFO     Cell;
 | |
|   UINT8                  GlyphPackInBits;
 | |
|   UINT8                  BitmapData[1];
 | |
| } EFI_HII_GIBT_VARIABILITY_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_IMAGE_PNG          0x19
 | |
| #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_PNG_BLOCK {
 | |
|   EFI_HII_IMAGE_BLOCK    Header;
 | |
|   UINT32                 Size;
 | |
|   UINT8                  Data[1];
 | |
| } EFI_HII_IIBT_PNG_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
 | |
| #define EFI_IFR_MATCH2_OP               0x64
 | |
| 
 | |
| //
 | |
| // 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_REST_STYLE          0x20
 | |
| #define EFI_IFR_FLAG_RECONNECT_REQUIRED  0x40
 | |
| #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_MATCH2 {
 | |
|   EFI_IFR_OP_HEADER    Header;
 | |
|   EFI_GUID             SyntaxType;
 | |
| } EFI_IFR_MATCH2;
 | |
| 
 | |
| 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
 | |
| 
 | |
| ///
 | |
| /// IMAGE_TOKEN is not defined in UEFI specification. But it is placed
 | |
| /// here for the easy access by C files and VFR source files.
 | |
| ///
 | |
| #define IMAGE_TOKEN(t)  t
 | |
| 
 | |
| #endif
 |