mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-10-27 01:03:45 +01:00 
			
		
		
		
	https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Bob Feng <bob.c.feng@intel.com>
		
			
				
	
	
		
			1680 lines
		
	
	
		
			49 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			1680 lines
		
	
	
		
			49 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.6
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef __UEFI_INTERNAL_FORMREPRESENTATION_H__
 | |
| #define __UEFI_INTERNAL_FORMREPRESENTATION_H__
 | |
| 
 | |
| 
 | |
| #define EFI_HII_PLATFORM_SETUP_FORMSET_GUID \
 | |
|   { 0x93039971, 0x8545, 0x4b04, { 0xb4, 0x5e, 0x32, 0xeb, 0x83, 0x26, 0x4, 0xe } }
 | |
| 
 | |
| //
 | |
| // The following types are currently defined:
 | |
| //
 | |
| typedef UINT32  RELOFST;
 | |
| 
 | |
| 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_DEFAULT_ID;
 | |
| typedef UINT32  EFI_HII_FONT_STYLE;
 | |
| 
 | |
| 
 | |
| 
 | |
| #pragma pack(1)
 | |
| 
 | |
| 
 | |
| //
 | |
| // HII package list
 | |
| //
 | |
| typedef struct {
 | |
|   EFI_GUID               PackageListGuid;
 | |
|   UINT32                 PackageLength;
 | |
| } EFI_HII_PACKAGE_LIST_HEADER;
 | |
| 
 | |
| /**
 | |
| 
 | |
|   Each package starts with a header, as defined above, which
 | |
|   indicates the size and type of the package. When added to a
 | |
|   pointer pointing to the start of the header, Length points at
 | |
|   the next package. The package lists form a package list when
 | |
|   concatenated together and terminated with an
 | |
|   EFI_HII_PACKAGE_HEADER with a Type of EFI_HII_PACKAGE_END. The
 | |
|   type EFI_HII_PACKAGE_TYPE_GUID is used for vendor-defined HII
 | |
|   packages, whose contents are determined by the Guid. The range
 | |
|   of package types starting with EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN
 | |
|   through EFI_HII_PACKAGE_TYPE_SYSTEM_END are reserved for system
 | |
|   firmware implementers.
 | |
| 
 | |
|   @param Length The size of the package in bytes.
 | |
| 
 | |
|   @param Type   The package type. See EFI_HII_PACKAGE_TYPE_x,
 | |
|                 below.
 | |
| 
 | |
|   @param Data   The package data, the format of which is
 | |
|                 determined by Type.
 | |
| 
 | |
| **/
 | |
| typedef struct {
 | |
|   UINT32  Length:24;
 | |
|   UINT32  Type:8;
 | |
|   // UINT8  Data[...];
 | |
| } EFI_HII_PACKAGE_HEADER;
 | |
| 
 | |
| //
 | |
| // EFI_HII_PACKAGE_TYPE_x.
 | |
| //
 | |
| #define EFI_HII_PACKAGE_TYPE_ALL             0x00
 | |
| #define EFI_HII_PACKAGE_TYPE_GUID            0x01
 | |
| #define EFI_HII_PACKAGE_FORM                 0x02
 | |
| #define EFI_HII_PACKAGE_KEYBOARD_LAYOUT      0x03
 | |
| #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_END                  0xDF
 | |
| #define EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN    0xE0
 | |
| #define EFI_HII_PACKAGE_TYPE_SYSTEM_END      0xFF
 | |
| 
 | |
| //
 | |
| // Simplified Font Package
 | |
| //
 | |
| 
 | |
| #define EFI_GLYPH_HEIGHT                     19
 | |
| #define EFI_GLYPH_WIDTH                      8
 | |
| //
 | |
| // Contents of EFI_NARROW_GLYPH.Attributes
 | |
| //
 | |
| #define EFI_GLYPH_NON_SPACING                0x01
 | |
| #define EFI_GLYPH_WIDE                       0x02
 | |
| 
 | |
| typedef struct {
 | |
|   CHAR16                 UnicodeWeight;
 | |
|   UINT8                  Attributes;
 | |
|   UINT8                  GlyphCol1[EFI_GLYPH_HEIGHT];
 | |
| } EFI_NARROW_GLYPH;
 | |
| 
 | |
| typedef struct {
 | |
|   CHAR16                 UnicodeWeight;
 | |
|   UINT8                  Attributes;
 | |
|   UINT8                  GlyphCol1[EFI_GLYPH_HEIGHT];
 | |
|   UINT8                  GlyphCol2[EFI_GLYPH_HEIGHT];
 | |
|   UINT8                  Pad[3];
 | |
| } EFI_WIDE_GLYPH;
 | |
| 
 | |
| 
 | |
| 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;
 | |
| 
 | |
| //
 | |
| // Font Package
 | |
| //
 | |
| 
 | |
| #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;
 | |
| 
 | |
| 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;
 | |
| 
 | |
| #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;
 | |
| 
 | |
| 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]; // the number of bytes per bitmap can be calculated by ((Cell.Width+7)/8)*Cell.Height
 | |
| } 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]; // the number of bytes per bitmap can be calculated by ((Cell.Width+7)/8)*Cell.Height
 | |
| } EFI_HII_GIBT_GLYPHS_BLOCK;
 | |
| 
 | |
| typedef struct _EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK {
 | |
|   EFI_HII_GLYPH_BLOCK    Header;
 | |
|   UINT8                  BitmapData[1]; // the number of bytes per bitmap can be calculated by ((Global.Cell.Width+7)/8)*Global.Cell.Height
 | |
| } EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK;
 | |
| 
 | |
| typedef struct _EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK {
 | |
|   EFI_HII_GLYPH_BLOCK    Header;
 | |
|   UINT16                 Count;
 | |
|   UINT8                  BitmapData[1]; // the number of bytes per bitmap can be calculated by ((Global.Cell.Width+7)/8)*Global.Cell.Height
 | |
| } 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;
 | |
| 
 | |
| //
 | |
| // Device Path Package
 | |
| //
 | |
| typedef struct _EFI_HII_DEVICE_PATH_PACKAGE {
 | |
|   EFI_HII_PACKAGE_HEADER   Header;
 | |
|   // EFI_DEVICE_PATH_PROTOCOL DevicePath[];
 | |
| } EFI_HII_DEVICE_PATH_PACKAGE;
 | |
| 
 | |
| //
 | |
| // GUID Package
 | |
| //
 | |
| 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;
 | |
| 
 | |
| //
 | |
| // String Package
 | |
| //
 | |
| 
 | |
| #define UEFI_CONFIG_LANG  "x-UEFI"
 | |
| #define UEFI_CONFIG_LANG2 "x-i-UEFI"
 | |
| 
 | |
| 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;
 | |
| 
 | |
| #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
 | |
| 
 | |
| 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;
 | |
| 
 | |
| //
 | |
| // Image Packages
 | |
| //
 | |
| 
 | |
| 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;
 | |
| 
 | |
| #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
 | |
| 
 | |
| 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;
 | |
| 
 | |
| 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;
 | |
| 
 | |
| //
 | |
| // Forms Package
 | |
| //
 | |
| 
 | |
| typedef struct _EFI_HII_FORM_PACKAGE {
 | |
|   EFI_HII_PACKAGE_HEADER       Header;
 | |
|   // EFI_IFR_OP_HEADER         OpCodeHeader;
 | |
|   // More op-codes follow
 | |
| } EFI_HII_FORM_PACKAGE;
 | |
| 
 | |
| 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_HII_REF     ref;
 | |
| } EFI_IFR_TYPE_VALUE;
 | |
| 
 | |
| #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_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
 | |
| 
 | |
| 
 | |
| 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;
 | |
| 
 | |
| #define EFI_IFR_FLAG_READ_ONLY          0x01
 | |
| #define EFI_IFR_FLAG_CALLBACK           0x04
 | |
| #define EFI_IFR_FLAG_RESET_REQUIRED     0x10
 | |
| #define EFI_IFR_FLAG_RECONNECT_REQUIRED 0x40
 | |
| #define EFI_IFR_FLAG_OPTIONS_ONLY       0x80
 | |
| 
 | |
| typedef struct _EFI_IFR_DEFAULTSTORE {
 | |
|   EFI_IFR_OP_HEADER        Header;
 | |
|   EFI_STRING_ID            DefaultName;
 | |
|   UINT16                   DefaultId;
 | |
| } EFI_IFR_DEFAULTSTORE;
 | |
| 
 | |
| #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;
 | |
| 
 | |
| #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;
 | |
| 
 | |
| #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;
 | |
| 
 | |
| #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_REFRESH_ID {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   EFI_GUID          RefreshEventGroupId;
 | |
| } EFI_IFR_REFRESH_ID;
 | |
| 
 | |
| 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;
 | |
| 
 | |
| #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_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_QUESTION_REF1 {
 | |
|   EFI_IFR_OP_HEADER        Header;
 | |
|   EFI_QUESTION_ID          QuestionId;
 | |
| } EFI_IFR_QUESTION_REF1;
 | |
| 
 | |
| 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_QUESTION_REF2 {
 | |
|   EFI_IFR_OP_HEADER        Header;
 | |
| } EFI_IFR_QUESTION_REF2;
 | |
| 
 | |
| 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_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;
 | |
| 
 | |
| #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
 | |
| 
 | |
| #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;
 | |
| 
 | |
| #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;
 | |
| 
 | |
| #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;
 | |
| //
 | |
| // Keyboard Package
 | |
| //
 | |
| 
 | |
| 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 {
 | |
|   EFI_KEY                 Key;
 | |
|   CHAR16                  Unicode;
 | |
|   CHAR16                  ShiftedUnicode;
 | |
|   CHAR16                  AltGrUnicode;
 | |
|   CHAR16                  ShiftedAltGrUnicode;
 | |
|   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 a "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;
 | |
| 
 | |
| typedef struct {
 | |
|   CHAR16                  Language[3];
 | |
|   CHAR16                  Space;
 | |
|   CHAR16                  DescriptionString[1];
 | |
| } EFI_DESCRIPTION_STRING;
 | |
| 
 | |
| typedef struct {
 | |
|   UINT16                  DescriptionCount;
 | |
|   EFI_DESCRIPTION_STRING  DescriptionString[1];
 | |
| } EFI_DESCRIPTION_STRING_BUNDLE;
 | |
| 
 | |
| //
 | |
| // 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
 | |
| 
 | |
| #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
 |