Path: blob/main/sys/contrib/edk2/Include/Uefi/UefiInternalFormRepresentation.h
48383 views
/** @file1This file defines the encoding for the VFR (Visual Form Representation) language.2IFR is primarily consumed by the EFI presentation engine, and produced by EFI3internal application and drivers as well as all add-in card option-ROM drivers45Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>6(C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>7SPDX-License-Identifier: BSD-2-Clause-Patent89@par Revision Reference:10These definitions are from UEFI 2.1 and 2.2.1112**/1314#ifndef __UEFI_INTERNAL_FORMREPRESENTATION_H__15#define __UEFI_INTERNAL_FORMREPRESENTATION_H__1617#include <Guid/HiiFormMapMethodGuid.h>1819///20/// The following types are currently defined:21///22typedef VOID *EFI_HII_HANDLE;23typedef CHAR16 *EFI_STRING;24typedef UINT16 EFI_IMAGE_ID;25typedef UINT16 EFI_QUESTION_ID;26typedef UINT16 EFI_STRING_ID;27typedef UINT16 EFI_FORM_ID;28typedef UINT16 EFI_VARSTORE_ID;29typedef UINT16 EFI_ANIMATION_ID;3031typedef UINT16 EFI_DEFAULT_ID;3233typedef UINT32 EFI_HII_FONT_STYLE;3435#pragma pack(1)3637//38// Definitions for Package Lists and Package Headers39// Section 27.3.140//4142///43/// The header found at the start of each package list.44///45typedef struct {46EFI_GUID PackageListGuid;47UINT32 PackageLength;48} EFI_HII_PACKAGE_LIST_HEADER;4950///51/// The header found at the start of each package.52///53typedef struct {54UINT32 Length : 24;55UINT32 Type : 8;56// UINT8 Data[...];57} EFI_HII_PACKAGE_HEADER;5859//60// Value of HII package type61//62#define EFI_HII_PACKAGE_TYPE_ALL 0x0063#define EFI_HII_PACKAGE_TYPE_GUID 0x0164#define EFI_HII_PACKAGE_FORMS 0x0265#define EFI_HII_PACKAGE_STRINGS 0x0466#define EFI_HII_PACKAGE_FONTS 0x0567#define EFI_HII_PACKAGE_IMAGES 0x0668#define EFI_HII_PACKAGE_SIMPLE_FONTS 0x0769#define EFI_HII_PACKAGE_DEVICE_PATH 0x0870#define EFI_HII_PACKAGE_KEYBOARD_LAYOUT 0x0971#define EFI_HII_PACKAGE_ANIMATIONS 0x0A72#define EFI_HII_PACKAGE_END 0xDF73#define EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN 0xE074#define EFI_HII_PACKAGE_TYPE_SYSTEM_END 0xFF7576//77// Definitions for Simplified Font Package78//7980///81/// Contents of EFI_NARROW_GLYPH.Attributes.82///@{83#define EFI_GLYPH_NON_SPACING 0x0184#define EFI_GLYPH_WIDE 0x0285#define EFI_GLYPH_HEIGHT 1986#define EFI_GLYPH_WIDTH 887///@}8889///90/// The EFI_NARROW_GLYPH has a preferred dimension (w x h) of 8 x 19 pixels.91///92typedef struct {93///94/// The Unicode representation of the glyph. The term weight is the95/// technical term for a character code.96///97CHAR16 UnicodeWeight;98///99/// The data element containing the glyph definitions.100///101UINT8 Attributes;102///103/// The column major glyph representation of the character. Bits104/// with values of one indicate that the corresponding pixel is to be105/// on when normally displayed; those with zero are off.106///107UINT8 GlyphCol1[EFI_GLYPH_HEIGHT];108} EFI_NARROW_GLYPH;109110///111/// The EFI_WIDE_GLYPH has a preferred dimension (w x h) of 16 x 19 pixels, which is large enough112/// to accommodate logographic characters.113///114typedef struct {115///116/// The Unicode representation of the glyph. The term weight is the117/// technical term for a character code.118///119CHAR16 UnicodeWeight;120///121/// The data element containing the glyph definitions.122///123UINT8 Attributes;124///125/// The column major glyph representation of the character. Bits126/// with values of one indicate that the corresponding pixel is to be127/// on when normally displayed; those with zero are off.128///129UINT8 GlyphCol1[EFI_GLYPH_HEIGHT];130///131/// The column major glyph representation of the character. Bits132/// with values of one indicate that the corresponding pixel is to be133/// on when normally displayed; those with zero are off.134///135UINT8 GlyphCol2[EFI_GLYPH_HEIGHT];136///137/// Ensures that sizeof (EFI_WIDE_GLYPH) is twice the138/// sizeof (EFI_NARROW_GLYPH). The contents of Pad must139/// be zero.140///141UINT8 Pad[3];142} EFI_WIDE_GLYPH;143144///145/// A simplified font package consists of a font header146/// followed by a series of glyph structures.147///148typedef struct _EFI_HII_SIMPLE_FONT_PACKAGE_HDR {149EFI_HII_PACKAGE_HEADER Header;150UINT16 NumberOfNarrowGlyphs;151UINT16 NumberOfWideGlyphs;152// EFI_NARROW_GLYPH NarrowGlyphs[];153// EFI_WIDE_GLYPH WideGlyphs[];154} EFI_HII_SIMPLE_FONT_PACKAGE_HDR;155156//157// Definitions for Font Package158// Section 27.3.3159//160161//162// Value for font style163//164#define EFI_HII_FONT_STYLE_NORMAL 0x00000000165#define EFI_HII_FONT_STYLE_BOLD 0x00000001166#define EFI_HII_FONT_STYLE_ITALIC 0x00000002167#define EFI_HII_FONT_STYLE_EMBOSS 0x00010000168#define EFI_HII_FONT_STYLE_OUTLINE 0x00020000169#define EFI_HII_FONT_STYLE_SHADOW 0x00040000170#define EFI_HII_FONT_STYLE_UNDERLINE 0x00080000171#define EFI_HII_FONT_STYLE_DBL_UNDER 0x00100000172173typedef struct _EFI_HII_GLYPH_INFO {174UINT16 Width;175UINT16 Height;176INT16 OffsetX;177INT16 OffsetY;178INT16 AdvanceX;179} EFI_HII_GLYPH_INFO;180181///182/// The fixed header consists of a standard record header,183/// then the character values in this section, the flags184/// (including the encoding method) and the offsets of the glyph185/// information, the glyph bitmaps and the character map.186///187typedef struct _EFI_HII_FONT_PACKAGE_HDR {188EFI_HII_PACKAGE_HEADER Header;189UINT32 HdrSize;190UINT32 GlyphBlockOffset;191EFI_HII_GLYPH_INFO Cell;192EFI_HII_FONT_STYLE FontStyle;193CHAR16 FontFamily[1];194} EFI_HII_FONT_PACKAGE_HDR;195196//197// Value of different glyph info block types198//199#define EFI_HII_GIBT_END 0x00200#define EFI_HII_GIBT_GLYPH 0x10201#define EFI_HII_GIBT_GLYPHS 0x11202#define EFI_HII_GIBT_GLYPH_DEFAULT 0x12203#define EFI_HII_GIBT_GLYPHS_DEFAULT 0x13204#define EFI_HII_GIBT_GLYPH_VARIABILITY 0x14205#define EFI_HII_GIBT_DUPLICATE 0x20206#define EFI_HII_GIBT_SKIP2 0x21207#define EFI_HII_GIBT_SKIP1 0x22208#define EFI_HII_GIBT_DEFAULTS 0x23209#define EFI_HII_GIBT_EXT1 0x30210#define EFI_HII_GIBT_EXT2 0x31211#define EFI_HII_GIBT_EXT4 0x32212213typedef struct _EFI_HII_GLYPH_BLOCK {214UINT8 BlockType;215} EFI_HII_GLYPH_BLOCK;216217//218// Definition of different glyph info block types219//220221typedef struct _EFI_HII_GIBT_DEFAULTS_BLOCK {222EFI_HII_GLYPH_BLOCK Header;223EFI_HII_GLYPH_INFO Cell;224} EFI_HII_GIBT_DEFAULTS_BLOCK;225226typedef struct _EFI_HII_GIBT_DUPLICATE_BLOCK {227EFI_HII_GLYPH_BLOCK Header;228CHAR16 CharValue;229} EFI_HII_GIBT_DUPLICATE_BLOCK;230231typedef struct _EFI_GLYPH_GIBT_END_BLOCK {232EFI_HII_GLYPH_BLOCK Header;233} EFI_GLYPH_GIBT_END_BLOCK;234235typedef struct _EFI_HII_GIBT_EXT1_BLOCK {236EFI_HII_GLYPH_BLOCK Header;237UINT8 BlockType2;238UINT8 Length;239} EFI_HII_GIBT_EXT1_BLOCK;240241typedef struct _EFI_HII_GIBT_EXT2_BLOCK {242EFI_HII_GLYPH_BLOCK Header;243UINT8 BlockType2;244UINT16 Length;245} EFI_HII_GIBT_EXT2_BLOCK;246247typedef struct _EFI_HII_GIBT_EXT4_BLOCK {248EFI_HII_GLYPH_BLOCK Header;249UINT8 BlockType2;250UINT32 Length;251} EFI_HII_GIBT_EXT4_BLOCK;252253typedef struct _EFI_HII_GIBT_GLYPH_BLOCK {254EFI_HII_GLYPH_BLOCK Header;255EFI_HII_GLYPH_INFO Cell;256UINT8 BitmapData[1];257} EFI_HII_GIBT_GLYPH_BLOCK;258259typedef struct _EFI_HII_GIBT_GLYPHS_BLOCK {260EFI_HII_GLYPH_BLOCK Header;261EFI_HII_GLYPH_INFO Cell;262UINT16 Count;263UINT8 BitmapData[1];264} EFI_HII_GIBT_GLYPHS_BLOCK;265266typedef struct _EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK {267EFI_HII_GLYPH_BLOCK Header;268UINT8 BitmapData[1];269} EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK;270271typedef struct _EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK {272EFI_HII_GLYPH_BLOCK Header;273UINT16 Count;274UINT8 BitmapData[1];275} EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK;276277typedef struct _EFI_HII_GIBT_VARIABILITY_BLOCK {278EFI_HII_GLYPH_BLOCK Header;279EFI_HII_GLYPH_INFO Cell;280UINT8 GlyphPackInBits;281UINT8 BitmapData[1];282} EFI_HII_GIBT_VARIABILITY_BLOCK;283284typedef struct _EFI_HII_GIBT_SKIP1_BLOCK {285EFI_HII_GLYPH_BLOCK Header;286UINT8 SkipCount;287} EFI_HII_GIBT_SKIP1_BLOCK;288289typedef struct _EFI_HII_GIBT_SKIP2_BLOCK {290EFI_HII_GLYPH_BLOCK Header;291UINT16 SkipCount;292} EFI_HII_GIBT_SKIP2_BLOCK;293294//295// Definitions for Device Path Package296// Section 27.3.4297//298299///300/// The device path package is used to carry a device path301/// associated with the package list.302///303typedef struct _EFI_HII_DEVICE_PATH_PACKAGE_HDR {304EFI_HII_PACKAGE_HEADER Header;305// EFI_DEVICE_PATH_PROTOCOL DevicePath[];306} EFI_HII_DEVICE_PATH_PACKAGE_HDR;307308//309// Definitions for GUID Package310// Section 27.3.5311//312313///314/// The GUID package is used to carry data where the format is defined by a GUID.315///316typedef struct _EFI_HII_GUID_PACKAGE_HDR {317EFI_HII_PACKAGE_HEADER Header;318EFI_GUID Guid;319// Data per GUID definition may follow320} EFI_HII_GUID_PACKAGE_HDR;321322//323// Definitions for String Package324// Section 27.3.6325//326327#define UEFI_CONFIG_LANG "x-UEFI"328#define UEFI_CONFIG_LANG_2 "x-i-UEFI"329330///331/// The fixed header consists of a standard record header and then the string identifiers332/// contained in this section and the offsets of the string and language information.333///334typedef struct _EFI_HII_STRING_PACKAGE_HDR {335EFI_HII_PACKAGE_HEADER Header;336UINT32 HdrSize;337UINT32 StringInfoOffset;338CHAR16 LanguageWindow[16];339EFI_STRING_ID LanguageName;340CHAR8 Language[1];341} EFI_HII_STRING_PACKAGE_HDR;342343typedef struct {344UINT8 BlockType;345} EFI_HII_STRING_BLOCK;346347//348// Value of different string information block types349//350#define EFI_HII_SIBT_END 0x00351#define EFI_HII_SIBT_STRING_SCSU 0x10352#define EFI_HII_SIBT_STRING_SCSU_FONT 0x11353#define EFI_HII_SIBT_STRINGS_SCSU 0x12354#define EFI_HII_SIBT_STRINGS_SCSU_FONT 0x13355#define EFI_HII_SIBT_STRING_UCS2 0x14356#define EFI_HII_SIBT_STRING_UCS2_FONT 0x15357#define EFI_HII_SIBT_STRINGS_UCS2 0x16358#define EFI_HII_SIBT_STRINGS_UCS2_FONT 0x17359#define EFI_HII_SIBT_DUPLICATE 0x20360#define EFI_HII_SIBT_SKIP2 0x21361#define EFI_HII_SIBT_SKIP1 0x22362#define EFI_HII_SIBT_EXT1 0x30363#define EFI_HII_SIBT_EXT2 0x31364#define EFI_HII_SIBT_EXT4 0x32365#define EFI_HII_SIBT_FONT 0x40366367//368// Definition of different string information block types369//370371typedef struct _EFI_HII_SIBT_DUPLICATE_BLOCK {372EFI_HII_STRING_BLOCK Header;373EFI_STRING_ID StringId;374} EFI_HII_SIBT_DUPLICATE_BLOCK;375376typedef struct _EFI_HII_SIBT_END_BLOCK {377EFI_HII_STRING_BLOCK Header;378} EFI_HII_SIBT_END_BLOCK;379380typedef struct _EFI_HII_SIBT_EXT1_BLOCK {381EFI_HII_STRING_BLOCK Header;382UINT8 BlockType2;383UINT8 Length;384} EFI_HII_SIBT_EXT1_BLOCK;385386typedef struct _EFI_HII_SIBT_EXT2_BLOCK {387EFI_HII_STRING_BLOCK Header;388UINT8 BlockType2;389UINT16 Length;390} EFI_HII_SIBT_EXT2_BLOCK;391392typedef struct _EFI_HII_SIBT_EXT4_BLOCK {393EFI_HII_STRING_BLOCK Header;394UINT8 BlockType2;395UINT32 Length;396} EFI_HII_SIBT_EXT4_BLOCK;397398typedef struct _EFI_HII_SIBT_FONT_BLOCK {399EFI_HII_SIBT_EXT2_BLOCK Header;400UINT8 FontId;401UINT16 FontSize;402EFI_HII_FONT_STYLE FontStyle;403CHAR16 FontName[1];404} EFI_HII_SIBT_FONT_BLOCK;405406typedef struct _EFI_HII_SIBT_SKIP1_BLOCK {407EFI_HII_STRING_BLOCK Header;408UINT8 SkipCount;409} EFI_HII_SIBT_SKIP1_BLOCK;410411typedef struct _EFI_HII_SIBT_SKIP2_BLOCK {412EFI_HII_STRING_BLOCK Header;413UINT16 SkipCount;414} EFI_HII_SIBT_SKIP2_BLOCK;415416typedef struct _EFI_HII_SIBT_STRING_SCSU_BLOCK {417EFI_HII_STRING_BLOCK Header;418UINT8 StringText[1];419} EFI_HII_SIBT_STRING_SCSU_BLOCK;420421typedef struct _EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK {422EFI_HII_STRING_BLOCK Header;423UINT8 FontIdentifier;424UINT8 StringText[1];425} EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK;426427typedef struct _EFI_HII_SIBT_STRINGS_SCSU_BLOCK {428EFI_HII_STRING_BLOCK Header;429UINT16 StringCount;430UINT8 StringText[1];431} EFI_HII_SIBT_STRINGS_SCSU_BLOCK;432433typedef struct _EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK {434EFI_HII_STRING_BLOCK Header;435UINT8 FontIdentifier;436UINT16 StringCount;437UINT8 StringText[1];438} EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK;439440typedef struct _EFI_HII_SIBT_STRING_UCS2_BLOCK {441EFI_HII_STRING_BLOCK Header;442CHAR16 StringText[1];443} EFI_HII_SIBT_STRING_UCS2_BLOCK;444445typedef struct _EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK {446EFI_HII_STRING_BLOCK Header;447UINT8 FontIdentifier;448CHAR16 StringText[1];449} EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK;450451typedef struct _EFI_HII_SIBT_STRINGS_UCS2_BLOCK {452EFI_HII_STRING_BLOCK Header;453UINT16 StringCount;454CHAR16 StringText[1];455} EFI_HII_SIBT_STRINGS_UCS2_BLOCK;456457typedef struct _EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK {458EFI_HII_STRING_BLOCK Header;459UINT8 FontIdentifier;460UINT16 StringCount;461CHAR16 StringText[1];462} EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK;463464//465// Definitions for Image Package466// Section 27.3.7467//468469typedef struct _EFI_HII_IMAGE_PACKAGE_HDR {470EFI_HII_PACKAGE_HEADER Header;471UINT32 ImageInfoOffset;472UINT32 PaletteInfoOffset;473} EFI_HII_IMAGE_PACKAGE_HDR;474475typedef struct _EFI_HII_IMAGE_BLOCK {476UINT8 BlockType;477} EFI_HII_IMAGE_BLOCK;478479//480// Value of different image information block types481//482#define EFI_HII_IIBT_END 0x00483#define EFI_HII_IIBT_IMAGE_1BIT 0x10484#define EFI_HII_IIBT_IMAGE_1BIT_TRANS 0x11485#define EFI_HII_IIBT_IMAGE_4BIT 0x12486#define EFI_HII_IIBT_IMAGE_4BIT_TRANS 0x13487#define EFI_HII_IIBT_IMAGE_8BIT 0x14488#define EFI_HII_IIBT_IMAGE_8BIT_TRANS 0x15489#define EFI_HII_IIBT_IMAGE_24BIT 0x16490#define EFI_HII_IIBT_IMAGE_24BIT_TRANS 0x17491#define EFI_HII_IIBT_IMAGE_JPEG 0x18492#define EFI_HII_IIBT_IMAGE_PNG 0x19493#define EFI_HII_IIBT_DUPLICATE 0x20494#define EFI_HII_IIBT_SKIP2 0x21495#define EFI_HII_IIBT_SKIP1 0x22496#define EFI_HII_IIBT_EXT1 0x30497#define EFI_HII_IIBT_EXT2 0x31498#define EFI_HII_IIBT_EXT4 0x32499500//501// Definition of different image information block types502//503504typedef struct _EFI_HII_IIBT_END_BLOCK {505EFI_HII_IMAGE_BLOCK Header;506} EFI_HII_IIBT_END_BLOCK;507508typedef struct _EFI_HII_IIBT_EXT1_BLOCK {509EFI_HII_IMAGE_BLOCK Header;510UINT8 BlockType2;511UINT8 Length;512} EFI_HII_IIBT_EXT1_BLOCK;513514typedef struct _EFI_HII_IIBT_EXT2_BLOCK {515EFI_HII_IMAGE_BLOCK Header;516UINT8 BlockType2;517UINT16 Length;518} EFI_HII_IIBT_EXT2_BLOCK;519520typedef struct _EFI_HII_IIBT_EXT4_BLOCK {521EFI_HII_IMAGE_BLOCK Header;522UINT8 BlockType2;523UINT32 Length;524} EFI_HII_IIBT_EXT4_BLOCK;525526typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BASE {527UINT16 Width;528UINT16 Height;529UINT8 Data[1];530} EFI_HII_IIBT_IMAGE_1BIT_BASE;531532typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BLOCK {533EFI_HII_IMAGE_BLOCK Header;534UINT8 PaletteIndex;535EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap;536} EFI_HII_IIBT_IMAGE_1BIT_BLOCK;537538typedef struct _EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK {539EFI_HII_IMAGE_BLOCK Header;540UINT8 PaletteIndex;541EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap;542} EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK;543544typedef struct _EFI_HII_RGB_PIXEL {545UINT8 b;546UINT8 g;547UINT8 r;548} EFI_HII_RGB_PIXEL;549550typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BASE {551UINT16 Width;552UINT16 Height;553EFI_HII_RGB_PIXEL Bitmap[1];554} EFI_HII_IIBT_IMAGE_24BIT_BASE;555556typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BLOCK {557EFI_HII_IMAGE_BLOCK Header;558EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap;559} EFI_HII_IIBT_IMAGE_24BIT_BLOCK;560561typedef struct _EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK {562EFI_HII_IMAGE_BLOCK Header;563EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap;564} EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK;565566typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BASE {567UINT16 Width;568UINT16 Height;569UINT8 Data[1];570} EFI_HII_IIBT_IMAGE_4BIT_BASE;571572typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BLOCK {573EFI_HII_IMAGE_BLOCK Header;574UINT8 PaletteIndex;575EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap;576} EFI_HII_IIBT_IMAGE_4BIT_BLOCK;577578typedef struct _EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK {579EFI_HII_IMAGE_BLOCK Header;580UINT8 PaletteIndex;581EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap;582} EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK;583584typedef struct _EFI_HII_IIBT_IMAGE_8BIT_BASE {585UINT16 Width;586UINT16 Height;587UINT8 Data[1];588} EFI_HII_IIBT_IMAGE_8BIT_BASE;589590typedef struct _EFI_HII_IIBT_IMAGE_8BIT_PALETTE_BLOCK {591EFI_HII_IMAGE_BLOCK Header;592UINT8 PaletteIndex;593EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap;594} EFI_HII_IIBT_IMAGE_8BIT_BLOCK;595596typedef struct _EFI_HII_IIBT_IMAGE_8BIT_TRANS_BLOCK {597EFI_HII_IMAGE_BLOCK Header;598UINT8 PaletteIndex;599EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap;600} EFI_HII_IIBT_IMAGE_8BIT_TRAN_BLOCK;601602typedef struct _EFI_HII_IIBT_DUPLICATE_BLOCK {603EFI_HII_IMAGE_BLOCK Header;604EFI_IMAGE_ID ImageId;605} EFI_HII_IIBT_DUPLICATE_BLOCK;606607typedef struct _EFI_HII_IIBT_JPEG_BLOCK {608EFI_HII_IMAGE_BLOCK Header;609UINT32 Size;610UINT8 Data[1];611} EFI_HII_IIBT_JPEG_BLOCK;612613typedef struct _EFI_HII_IIBT_PNG_BLOCK {614EFI_HII_IMAGE_BLOCK Header;615UINT32 Size;616UINT8 Data[1];617} EFI_HII_IIBT_PNG_BLOCK;618619typedef struct _EFI_HII_IIBT_SKIP1_BLOCK {620EFI_HII_IMAGE_BLOCK Header;621UINT8 SkipCount;622} EFI_HII_IIBT_SKIP1_BLOCK;623624typedef struct _EFI_HII_IIBT_SKIP2_BLOCK {625EFI_HII_IMAGE_BLOCK Header;626UINT16 SkipCount;627} EFI_HII_IIBT_SKIP2_BLOCK;628629//630// Definitions for Palette Information631//632633typedef struct _EFI_HII_IMAGE_PALETTE_INFO_HEADER {634UINT16 PaletteCount;635} EFI_HII_IMAGE_PALETTE_INFO_HEADER;636637typedef struct _EFI_HII_IMAGE_PALETTE_INFO {638UINT16 PaletteSize;639EFI_HII_RGB_PIXEL PaletteValue[1];640} EFI_HII_IMAGE_PALETTE_INFO;641642//643// Definitions for Forms Package644// Section 27.3.8645//646647///648/// The Form package is used to carry form-based encoding data.649///650typedef struct _EFI_HII_FORM_PACKAGE_HDR {651EFI_HII_PACKAGE_HEADER Header;652// EFI_IFR_OP_HEADER OpCodeHeader;653// More op-codes follow654} EFI_HII_FORM_PACKAGE_HDR;655656typedef struct {657UINT8 Hour;658UINT8 Minute;659UINT8 Second;660} EFI_HII_TIME;661662typedef struct {663UINT16 Year;664UINT8 Month;665UINT8 Day;666} EFI_HII_DATE;667668typedef struct {669EFI_QUESTION_ID QuestionId;670EFI_FORM_ID FormId;671EFI_GUID FormSetGuid;672EFI_STRING_ID DevicePath;673} EFI_HII_REF;674675typedef union {676UINT8 u8;677UINT16 u16;678UINT32 u32;679UINT64 u64;680BOOLEAN b;681EFI_HII_TIME time;682EFI_HII_DATE date;683EFI_STRING_ID string; ///< EFI_IFR_TYPE_STRING, EFI_IFR_TYPE_ACTION684EFI_HII_REF ref; ///< EFI_IFR_TYPE_REF685// UINT8 buffer[]; ///< EFI_IFR_TYPE_BUFFER686} EFI_IFR_TYPE_VALUE;687688//689// IFR Opcodes690//691#define EFI_IFR_FORM_OP 0x01692#define EFI_IFR_SUBTITLE_OP 0x02693#define EFI_IFR_TEXT_OP 0x03694#define EFI_IFR_IMAGE_OP 0x04695#define EFI_IFR_ONE_OF_OP 0x05696#define EFI_IFR_CHECKBOX_OP 0x06697#define EFI_IFR_NUMERIC_OP 0x07698#define EFI_IFR_PASSWORD_OP 0x08699#define EFI_IFR_ONE_OF_OPTION_OP 0x09700#define EFI_IFR_SUPPRESS_IF_OP 0x0A701#define EFI_IFR_LOCKED_OP 0x0B702#define EFI_IFR_ACTION_OP 0x0C703#define EFI_IFR_RESET_BUTTON_OP 0x0D704#define EFI_IFR_FORM_SET_OP 0x0E705#define EFI_IFR_REF_OP 0x0F706#define EFI_IFR_NO_SUBMIT_IF_OP 0x10707#define EFI_IFR_INCONSISTENT_IF_OP 0x11708#define EFI_IFR_EQ_ID_VAL_OP 0x12709#define EFI_IFR_EQ_ID_ID_OP 0x13710#define EFI_IFR_EQ_ID_VAL_LIST_OP 0x14711#define EFI_IFR_AND_OP 0x15712#define EFI_IFR_OR_OP 0x16713#define EFI_IFR_NOT_OP 0x17714#define EFI_IFR_RULE_OP 0x18715#define EFI_IFR_GRAY_OUT_IF_OP 0x19716#define EFI_IFR_DATE_OP 0x1A717#define EFI_IFR_TIME_OP 0x1B718#define EFI_IFR_STRING_OP 0x1C719#define EFI_IFR_REFRESH_OP 0x1D720#define EFI_IFR_DISABLE_IF_OP 0x1E721#define EFI_IFR_ANIMATION_OP 0x1F722#define EFI_IFR_TO_LOWER_OP 0x20723#define EFI_IFR_TO_UPPER_OP 0x21724#define EFI_IFR_MAP_OP 0x22725#define EFI_IFR_ORDERED_LIST_OP 0x23726#define EFI_IFR_VARSTORE_OP 0x24727#define EFI_IFR_VARSTORE_NAME_VALUE_OP 0x25728#define EFI_IFR_VARSTORE_EFI_OP 0x26729#define EFI_IFR_VARSTORE_DEVICE_OP 0x27730#define EFI_IFR_VERSION_OP 0x28731#define EFI_IFR_END_OP 0x29732#define EFI_IFR_MATCH_OP 0x2A733#define EFI_IFR_GET_OP 0x2B734#define EFI_IFR_SET_OP 0x2C735#define EFI_IFR_READ_OP 0x2D736#define EFI_IFR_WRITE_OP 0x2E737#define EFI_IFR_EQUAL_OP 0x2F738#define EFI_IFR_NOT_EQUAL_OP 0x30739#define EFI_IFR_GREATER_THAN_OP 0x31740#define EFI_IFR_GREATER_EQUAL_OP 0x32741#define EFI_IFR_LESS_THAN_OP 0x33742#define EFI_IFR_LESS_EQUAL_OP 0x34743#define EFI_IFR_BITWISE_AND_OP 0x35744#define EFI_IFR_BITWISE_OR_OP 0x36745#define EFI_IFR_BITWISE_NOT_OP 0x37746#define EFI_IFR_SHIFT_LEFT_OP 0x38747#define EFI_IFR_SHIFT_RIGHT_OP 0x39748#define EFI_IFR_ADD_OP 0x3A749#define EFI_IFR_SUBTRACT_OP 0x3B750#define EFI_IFR_MULTIPLY_OP 0x3C751#define EFI_IFR_DIVIDE_OP 0x3D752#define EFI_IFR_MODULO_OP 0x3E753#define EFI_IFR_RULE_REF_OP 0x3F754#define EFI_IFR_QUESTION_REF1_OP 0x40755#define EFI_IFR_QUESTION_REF2_OP 0x41756#define EFI_IFR_UINT8_OP 0x42757#define EFI_IFR_UINT16_OP 0x43758#define EFI_IFR_UINT32_OP 0x44759#define EFI_IFR_UINT64_OP 0x45760#define EFI_IFR_TRUE_OP 0x46761#define EFI_IFR_FALSE_OP 0x47762#define EFI_IFR_TO_UINT_OP 0x48763#define EFI_IFR_TO_STRING_OP 0x49764#define EFI_IFR_TO_BOOLEAN_OP 0x4A765#define EFI_IFR_MID_OP 0x4B766#define EFI_IFR_FIND_OP 0x4C767#define EFI_IFR_TOKEN_OP 0x4D768#define EFI_IFR_STRING_REF1_OP 0x4E769#define EFI_IFR_STRING_REF2_OP 0x4F770#define EFI_IFR_CONDITIONAL_OP 0x50771#define EFI_IFR_QUESTION_REF3_OP 0x51772#define EFI_IFR_ZERO_OP 0x52773#define EFI_IFR_ONE_OP 0x53774#define EFI_IFR_ONES_OP 0x54775#define EFI_IFR_UNDEFINED_OP 0x55776#define EFI_IFR_LENGTH_OP 0x56777#define EFI_IFR_DUP_OP 0x57778#define EFI_IFR_THIS_OP 0x58779#define EFI_IFR_SPAN_OP 0x59780#define EFI_IFR_VALUE_OP 0x5A781#define EFI_IFR_DEFAULT_OP 0x5B782#define EFI_IFR_DEFAULTSTORE_OP 0x5C783#define EFI_IFR_FORM_MAP_OP 0x5D784#define EFI_IFR_CATENATE_OP 0x5E785#define EFI_IFR_GUID_OP 0x5F786#define EFI_IFR_SECURITY_OP 0x60787#define EFI_IFR_MODAL_TAG_OP 0x61788#define EFI_IFR_REFRESH_ID_OP 0x62789#define EFI_IFR_WARNING_IF_OP 0x63790#define EFI_IFR_MATCH2_OP 0x64791792//793// Definitions of IFR Standard Headers794// Section 27.3.8.2795//796797typedef struct _EFI_IFR_OP_HEADER {798UINT8 OpCode;799UINT8 Length : 7;800UINT8 Scope : 1;801} EFI_IFR_OP_HEADER;802803typedef struct _EFI_IFR_STATEMENT_HEADER {804EFI_STRING_ID Prompt;805EFI_STRING_ID Help;806} EFI_IFR_STATEMENT_HEADER;807808typedef struct _EFI_IFR_QUESTION_HEADER {809EFI_IFR_STATEMENT_HEADER Header;810EFI_QUESTION_ID QuestionId;811EFI_VARSTORE_ID VarStoreId;812union {813EFI_STRING_ID VarName;814UINT16 VarOffset;815} VarStoreInfo;816UINT8 Flags;817} EFI_IFR_QUESTION_HEADER;818819//820// Flag values of EFI_IFR_QUESTION_HEADER821//822#define EFI_IFR_FLAG_READ_ONLY 0x01823#define EFI_IFR_FLAG_CALLBACK 0x04824#define EFI_IFR_FLAG_RESET_REQUIRED 0x10825#define EFI_IFR_FLAG_REST_STYLE 0x20826#define EFI_IFR_FLAG_RECONNECT_REQUIRED 0x40827#define EFI_IFR_FLAG_OPTIONS_ONLY 0x80828829//830// Definition for Opcode Reference831// Section 27.3.8.3832//833typedef struct _EFI_IFR_DEFAULTSTORE {834EFI_IFR_OP_HEADER Header;835EFI_STRING_ID DefaultName;836UINT16 DefaultId;837} EFI_IFR_DEFAULTSTORE;838839//840// Default Identifier of default store841//842#define EFI_HII_DEFAULT_CLASS_STANDARD 0x0000843#define EFI_HII_DEFAULT_CLASS_MANUFACTURING 0x0001844#define EFI_HII_DEFAULT_CLASS_SAFE 0x0002845#define EFI_HII_DEFAULT_CLASS_PLATFORM_BEGIN 0x4000846#define EFI_HII_DEFAULT_CLASS_PLATFORM_END 0x7fff847#define EFI_HII_DEFAULT_CLASS_HARDWARE_BEGIN 0x8000848#define EFI_HII_DEFAULT_CLASS_HARDWARE_END 0xbfff849#define EFI_HII_DEFAULT_CLASS_FIRMWARE_BEGIN 0xc000850#define EFI_HII_DEFAULT_CLASS_FIRMWARE_END 0xffff851852typedef struct _EFI_IFR_VARSTORE {853EFI_IFR_OP_HEADER Header;854EFI_GUID Guid;855EFI_VARSTORE_ID VarStoreId;856UINT16 Size;857UINT8 Name[1];858} EFI_IFR_VARSTORE;859860typedef struct _EFI_IFR_VARSTORE_EFI {861EFI_IFR_OP_HEADER Header;862EFI_VARSTORE_ID VarStoreId;863EFI_GUID Guid;864UINT32 Attributes;865UINT16 Size;866UINT8 Name[1];867} EFI_IFR_VARSTORE_EFI;868869typedef struct _EFI_IFR_VARSTORE_NAME_VALUE {870EFI_IFR_OP_HEADER Header;871EFI_VARSTORE_ID VarStoreId;872EFI_GUID Guid;873} EFI_IFR_VARSTORE_NAME_VALUE;874875typedef struct _EFI_IFR_FORM_SET {876EFI_IFR_OP_HEADER Header;877EFI_GUID Guid;878EFI_STRING_ID FormSetTitle;879EFI_STRING_ID Help;880UINT8 Flags;881// EFI_GUID ClassGuid[];882} EFI_IFR_FORM_SET;883884typedef struct _EFI_IFR_END {885EFI_IFR_OP_HEADER Header;886} EFI_IFR_END;887888typedef struct _EFI_IFR_FORM {889EFI_IFR_OP_HEADER Header;890UINT16 FormId;891EFI_STRING_ID FormTitle;892} EFI_IFR_FORM;893894typedef struct _EFI_IFR_IMAGE {895EFI_IFR_OP_HEADER Header;896EFI_IMAGE_ID Id;897} EFI_IFR_IMAGE;898899typedef struct _EFI_IFR_MODAL_TAG {900EFI_IFR_OP_HEADER Header;901} EFI_IFR_MODAL_TAG;902903typedef struct _EFI_IFR_LOCKED {904EFI_IFR_OP_HEADER Header;905} EFI_IFR_LOCKED;906907typedef struct _EFI_IFR_RULE {908EFI_IFR_OP_HEADER Header;909UINT8 RuleId;910} EFI_IFR_RULE;911912typedef struct _EFI_IFR_DEFAULT {913EFI_IFR_OP_HEADER Header;914UINT16 DefaultId;915UINT8 Type;916EFI_IFR_TYPE_VALUE Value;917} EFI_IFR_DEFAULT;918919typedef struct _EFI_IFR_DEFAULT_2 {920EFI_IFR_OP_HEADER Header;921UINT16 DefaultId;922UINT8 Type;923} EFI_IFR_DEFAULT_2;924925typedef struct _EFI_IFR_VALUE {926EFI_IFR_OP_HEADER Header;927} EFI_IFR_VALUE;928929typedef struct _EFI_IFR_SUBTITLE {930EFI_IFR_OP_HEADER Header;931EFI_IFR_STATEMENT_HEADER Statement;932UINT8 Flags;933} EFI_IFR_SUBTITLE;934935#define EFI_IFR_FLAGS_HORIZONTAL 0x01936937typedef struct _EFI_IFR_CHECKBOX {938EFI_IFR_OP_HEADER Header;939EFI_IFR_QUESTION_HEADER Question;940UINT8 Flags;941} EFI_IFR_CHECKBOX;942943#define EFI_IFR_CHECKBOX_DEFAULT 0x01944#define EFI_IFR_CHECKBOX_DEFAULT_MFG 0x02945946typedef struct _EFI_IFR_TEXT {947EFI_IFR_OP_HEADER Header;948EFI_IFR_STATEMENT_HEADER Statement;949EFI_STRING_ID TextTwo;950} EFI_IFR_TEXT;951952typedef struct _EFI_IFR_REF {953EFI_IFR_OP_HEADER Header;954EFI_IFR_QUESTION_HEADER Question;955EFI_FORM_ID FormId;956} EFI_IFR_REF;957958typedef struct _EFI_IFR_REF2 {959EFI_IFR_OP_HEADER Header;960EFI_IFR_QUESTION_HEADER Question;961EFI_FORM_ID FormId;962EFI_QUESTION_ID QuestionId;963} EFI_IFR_REF2;964965typedef struct _EFI_IFR_REF3 {966EFI_IFR_OP_HEADER Header;967EFI_IFR_QUESTION_HEADER Question;968EFI_FORM_ID FormId;969EFI_QUESTION_ID QuestionId;970EFI_GUID FormSetId;971} EFI_IFR_REF3;972973typedef struct _EFI_IFR_REF4 {974EFI_IFR_OP_HEADER Header;975EFI_IFR_QUESTION_HEADER Question;976EFI_FORM_ID FormId;977EFI_QUESTION_ID QuestionId;978EFI_GUID FormSetId;979EFI_STRING_ID DevicePath;980} EFI_IFR_REF4;981982typedef struct _EFI_IFR_REF5 {983EFI_IFR_OP_HEADER Header;984EFI_IFR_QUESTION_HEADER Question;985} EFI_IFR_REF5;986987typedef struct _EFI_IFR_RESET_BUTTON {988EFI_IFR_OP_HEADER Header;989EFI_IFR_STATEMENT_HEADER Statement;990EFI_DEFAULT_ID DefaultId;991} EFI_IFR_RESET_BUTTON;992993typedef struct _EFI_IFR_ACTION {994EFI_IFR_OP_HEADER Header;995EFI_IFR_QUESTION_HEADER Question;996EFI_STRING_ID QuestionConfig;997} EFI_IFR_ACTION;998999typedef struct _EFI_IFR_ACTION_1 {1000EFI_IFR_OP_HEADER Header;1001EFI_IFR_QUESTION_HEADER Question;1002} EFI_IFR_ACTION_1;10031004typedef struct _EFI_IFR_DATE {1005EFI_IFR_OP_HEADER Header;1006EFI_IFR_QUESTION_HEADER Question;1007UINT8 Flags;1008} EFI_IFR_DATE;10091010//1011// Flags that describe the behavior of the question.1012//1013#define EFI_QF_DATE_YEAR_SUPPRESS 0x011014#define EFI_QF_DATE_MONTH_SUPPRESS 0x021015#define EFI_QF_DATE_DAY_SUPPRESS 0x0410161017#define EFI_QF_DATE_STORAGE 0x301018#define QF_DATE_STORAGE_NORMAL 0x001019#define QF_DATE_STORAGE_TIME 0x101020#define QF_DATE_STORAGE_WAKEUP 0x2010211022typedef union {1023struct {1024UINT8 MinValue;1025UINT8 MaxValue;1026UINT8 Step;1027} u8;1028struct {1029UINT16 MinValue;1030UINT16 MaxValue;1031UINT16 Step;1032} u16;1033struct {1034UINT32 MinValue;1035UINT32 MaxValue;1036UINT32 Step;1037} u32;1038struct {1039UINT64 MinValue;1040UINT64 MaxValue;1041UINT64 Step;1042} u64;1043} MINMAXSTEP_DATA;10441045typedef struct _EFI_IFR_NUMERIC {1046EFI_IFR_OP_HEADER Header;1047EFI_IFR_QUESTION_HEADER Question;1048UINT8 Flags;1049MINMAXSTEP_DATA data;1050} EFI_IFR_NUMERIC;10511052//1053// Flags related to the numeric question1054//1055#define EFI_IFR_NUMERIC_SIZE 0x031056#define EFI_IFR_NUMERIC_SIZE_1 0x001057#define EFI_IFR_NUMERIC_SIZE_2 0x011058#define EFI_IFR_NUMERIC_SIZE_4 0x021059#define EFI_IFR_NUMERIC_SIZE_8 0x0310601061#define EFI_IFR_DISPLAY 0x301062#define EFI_IFR_DISPLAY_INT_DEC 0x001063#define EFI_IFR_DISPLAY_UINT_DEC 0x101064#define EFI_IFR_DISPLAY_UINT_HEX 0x2010651066typedef struct _EFI_IFR_ONE_OF {1067EFI_IFR_OP_HEADER Header;1068EFI_IFR_QUESTION_HEADER Question;1069UINT8 Flags;1070MINMAXSTEP_DATA data;1071} EFI_IFR_ONE_OF;10721073typedef struct _EFI_IFR_STRING {1074EFI_IFR_OP_HEADER Header;1075EFI_IFR_QUESTION_HEADER Question;1076UINT8 MinSize;1077UINT8 MaxSize;1078UINT8 Flags;1079} EFI_IFR_STRING;10801081#define EFI_IFR_STRING_MULTI_LINE 0x0110821083typedef struct _EFI_IFR_PASSWORD {1084EFI_IFR_OP_HEADER Header;1085EFI_IFR_QUESTION_HEADER Question;1086UINT16 MinSize;1087UINT16 MaxSize;1088} EFI_IFR_PASSWORD;10891090typedef struct _EFI_IFR_ORDERED_LIST {1091EFI_IFR_OP_HEADER Header;1092EFI_IFR_QUESTION_HEADER Question;1093UINT8 MaxContainers;1094UINT8 Flags;1095} EFI_IFR_ORDERED_LIST;10961097#define EFI_IFR_UNIQUE_SET 0x011098#define EFI_IFR_NO_EMPTY_SET 0x0210991100typedef struct _EFI_IFR_TIME {1101EFI_IFR_OP_HEADER Header;1102EFI_IFR_QUESTION_HEADER Question;1103UINT8 Flags;1104} EFI_IFR_TIME;11051106//1107// A bit-mask that determines which unique settings are active for this opcode.1108//1109#define QF_TIME_HOUR_SUPPRESS 0x011110#define QF_TIME_MINUTE_SUPPRESS 0x021111#define QF_TIME_SECOND_SUPPRESS 0x0411121113#define QF_TIME_STORAGE 0x301114#define QF_TIME_STORAGE_NORMAL 0x001115#define QF_TIME_STORAGE_TIME 0x101116#define QF_TIME_STORAGE_WAKEUP 0x2011171118typedef struct _EFI_IFR_DISABLE_IF {1119EFI_IFR_OP_HEADER Header;1120} EFI_IFR_DISABLE_IF;11211122typedef struct _EFI_IFR_SUPPRESS_IF {1123EFI_IFR_OP_HEADER Header;1124} EFI_IFR_SUPPRESS_IF;11251126typedef struct _EFI_IFR_GRAY_OUT_IF {1127EFI_IFR_OP_HEADER Header;1128} EFI_IFR_GRAY_OUT_IF;11291130typedef struct _EFI_IFR_INCONSISTENT_IF {1131EFI_IFR_OP_HEADER Header;1132EFI_STRING_ID Error;1133} EFI_IFR_INCONSISTENT_IF;11341135typedef struct _EFI_IFR_NO_SUBMIT_IF {1136EFI_IFR_OP_HEADER Header;1137EFI_STRING_ID Error;1138} EFI_IFR_NO_SUBMIT_IF;11391140typedef struct _EFI_IFR_WARNING_IF {1141EFI_IFR_OP_HEADER Header;1142EFI_STRING_ID Warning;1143UINT8 TimeOut;1144} EFI_IFR_WARNING_IF;11451146typedef struct _EFI_IFR_REFRESH {1147EFI_IFR_OP_HEADER Header;1148UINT8 RefreshInterval;1149} EFI_IFR_REFRESH;11501151typedef struct _EFI_IFR_VARSTORE_DEVICE {1152EFI_IFR_OP_HEADER Header;1153EFI_STRING_ID DevicePath;1154} EFI_IFR_VARSTORE_DEVICE;11551156typedef struct _EFI_IFR_ONE_OF_OPTION {1157EFI_IFR_OP_HEADER Header;1158EFI_STRING_ID Option;1159UINT8 Flags;1160UINT8 Type;1161EFI_IFR_TYPE_VALUE Value;1162} EFI_IFR_ONE_OF_OPTION;11631164//1165// Types of the option's value.1166//1167#define EFI_IFR_TYPE_NUM_SIZE_8 0x001168#define EFI_IFR_TYPE_NUM_SIZE_16 0x011169#define EFI_IFR_TYPE_NUM_SIZE_32 0x021170#define EFI_IFR_TYPE_NUM_SIZE_64 0x031171#define EFI_IFR_TYPE_BOOLEAN 0x041172#define EFI_IFR_TYPE_TIME 0x051173#define EFI_IFR_TYPE_DATE 0x061174#define EFI_IFR_TYPE_STRING 0x071175#define EFI_IFR_TYPE_OTHER 0x081176#define EFI_IFR_TYPE_UNDEFINED 0x091177#define EFI_IFR_TYPE_ACTION 0x0A1178#define EFI_IFR_TYPE_BUFFER 0x0B1179#define EFI_IFR_TYPE_REF 0x0C11801181#define EFI_IFR_OPTION_DEFAULT 0x101182#define EFI_IFR_OPTION_DEFAULT_MFG 0x2011831184typedef struct _EFI_IFR_GUID {1185EFI_IFR_OP_HEADER Header;1186EFI_GUID Guid;1187// Optional Data Follows1188} EFI_IFR_GUID;11891190typedef struct _EFI_IFR_REFRESH_ID {1191EFI_IFR_OP_HEADER Header;1192EFI_GUID RefreshEventGroupId;1193} EFI_IFR_REFRESH_ID;11941195typedef struct _EFI_IFR_DUP {1196EFI_IFR_OP_HEADER Header;1197} EFI_IFR_DUP;11981199typedef struct _EFI_IFR_EQ_ID_ID {1200EFI_IFR_OP_HEADER Header;1201EFI_QUESTION_ID QuestionId1;1202EFI_QUESTION_ID QuestionId2;1203} EFI_IFR_EQ_ID_ID;12041205typedef struct _EFI_IFR_EQ_ID_VAL {1206EFI_IFR_OP_HEADER Header;1207EFI_QUESTION_ID QuestionId;1208UINT16 Value;1209} EFI_IFR_EQ_ID_VAL;12101211typedef struct _EFI_IFR_EQ_ID_VAL_LIST {1212EFI_IFR_OP_HEADER Header;1213EFI_QUESTION_ID QuestionId;1214UINT16 ListLength;1215UINT16 ValueList[1];1216} EFI_IFR_EQ_ID_VAL_LIST;12171218typedef struct _EFI_IFR_UINT8 {1219EFI_IFR_OP_HEADER Header;1220UINT8 Value;1221} EFI_IFR_UINT8;12221223typedef struct _EFI_IFR_UINT16 {1224EFI_IFR_OP_HEADER Header;1225UINT16 Value;1226} EFI_IFR_UINT16;12271228typedef struct _EFI_IFR_UINT32 {1229EFI_IFR_OP_HEADER Header;1230UINT32 Value;1231} EFI_IFR_UINT32;12321233typedef struct _EFI_IFR_UINT64 {1234EFI_IFR_OP_HEADER Header;1235UINT64 Value;1236} EFI_IFR_UINT64;12371238typedef struct _EFI_IFR_QUESTION_REF1 {1239EFI_IFR_OP_HEADER Header;1240EFI_QUESTION_ID QuestionId;1241} EFI_IFR_QUESTION_REF1;12421243typedef struct _EFI_IFR_QUESTION_REF2 {1244EFI_IFR_OP_HEADER Header;1245} EFI_IFR_QUESTION_REF2;12461247typedef struct _EFI_IFR_QUESTION_REF3 {1248EFI_IFR_OP_HEADER Header;1249} EFI_IFR_QUESTION_REF3;12501251typedef struct _EFI_IFR_QUESTION_REF3_2 {1252EFI_IFR_OP_HEADER Header;1253EFI_STRING_ID DevicePath;1254} EFI_IFR_QUESTION_REF3_2;12551256typedef struct _EFI_IFR_QUESTION_REF3_3 {1257EFI_IFR_OP_HEADER Header;1258EFI_STRING_ID DevicePath;1259EFI_GUID Guid;1260} EFI_IFR_QUESTION_REF3_3;12611262typedef struct _EFI_IFR_RULE_REF {1263EFI_IFR_OP_HEADER Header;1264UINT8 RuleId;1265} EFI_IFR_RULE_REF;12661267typedef struct _EFI_IFR_STRING_REF1 {1268EFI_IFR_OP_HEADER Header;1269EFI_STRING_ID StringId;1270} EFI_IFR_STRING_REF1;12711272typedef struct _EFI_IFR_STRING_REF2 {1273EFI_IFR_OP_HEADER Header;1274} EFI_IFR_STRING_REF2;12751276typedef struct _EFI_IFR_THIS {1277EFI_IFR_OP_HEADER Header;1278} EFI_IFR_THIS;12791280typedef struct _EFI_IFR_TRUE {1281EFI_IFR_OP_HEADER Header;1282} EFI_IFR_TRUE;12831284typedef struct _EFI_IFR_FALSE {1285EFI_IFR_OP_HEADER Header;1286} EFI_IFR_FALSE;12871288typedef struct _EFI_IFR_ONE {1289EFI_IFR_OP_HEADER Header;1290} EFI_IFR_ONE;12911292typedef struct _EFI_IFR_ONES {1293EFI_IFR_OP_HEADER Header;1294} EFI_IFR_ONES;12951296typedef struct _EFI_IFR_ZERO {1297EFI_IFR_OP_HEADER Header;1298} EFI_IFR_ZERO;12991300typedef struct _EFI_IFR_UNDEFINED {1301EFI_IFR_OP_HEADER Header;1302} EFI_IFR_UNDEFINED;13031304typedef struct _EFI_IFR_VERSION {1305EFI_IFR_OP_HEADER Header;1306} EFI_IFR_VERSION;13071308typedef struct _EFI_IFR_LENGTH {1309EFI_IFR_OP_HEADER Header;1310} EFI_IFR_LENGTH;13111312typedef struct _EFI_IFR_NOT {1313EFI_IFR_OP_HEADER Header;1314} EFI_IFR_NOT;13151316typedef struct _EFI_IFR_BITWISE_NOT {1317EFI_IFR_OP_HEADER Header;1318} EFI_IFR_BITWISE_NOT;13191320typedef struct _EFI_IFR_TO_BOOLEAN {1321EFI_IFR_OP_HEADER Header;1322} EFI_IFR_TO_BOOLEAN;13231324///1325/// For EFI_IFR_TO_STRING, when converting from1326/// unsigned integers, these flags control the format:1327/// 0 = unsigned decimal.1328/// 1 = signed decimal.1329/// 2 = hexadecimal (lower-case alpha).1330/// 3 = hexadecimal (upper-case alpha).1331///@{1332#define EFI_IFR_STRING_UNSIGNED_DEC 01333#define EFI_IFR_STRING_SIGNED_DEC 11334#define EFI_IFR_STRING_LOWERCASE_HEX 21335#define EFI_IFR_STRING_UPPERCASE_HEX 31336///@}13371338///1339/// When converting from a buffer, these flags control the format:1340/// 0 = ASCII.1341/// 8 = Unicode.1342///@{1343#define EFI_IFR_STRING_ASCII 01344#define EFI_IFR_STRING_UNICODE 81345///@}13461347typedef struct _EFI_IFR_TO_STRING {1348EFI_IFR_OP_HEADER Header;1349UINT8 Format;1350} EFI_IFR_TO_STRING;13511352typedef struct _EFI_IFR_TO_UINT {1353EFI_IFR_OP_HEADER Header;1354} EFI_IFR_TO_UINT;13551356typedef struct _EFI_IFR_TO_UPPER {1357EFI_IFR_OP_HEADER Header;1358} EFI_IFR_TO_UPPER;13591360typedef struct _EFI_IFR_TO_LOWER {1361EFI_IFR_OP_HEADER Header;1362} EFI_IFR_TO_LOWER;13631364typedef struct _EFI_IFR_ADD {1365EFI_IFR_OP_HEADER Header;1366} EFI_IFR_ADD;13671368typedef struct _EFI_IFR_AND {1369EFI_IFR_OP_HEADER Header;1370} EFI_IFR_AND;13711372typedef struct _EFI_IFR_BITWISE_AND {1373EFI_IFR_OP_HEADER Header;1374} EFI_IFR_BITWISE_AND;13751376typedef struct _EFI_IFR_BITWISE_OR {1377EFI_IFR_OP_HEADER Header;1378} EFI_IFR_BITWISE_OR;13791380typedef struct _EFI_IFR_CATENATE {1381EFI_IFR_OP_HEADER Header;1382} EFI_IFR_CATENATE;13831384typedef struct _EFI_IFR_DIVIDE {1385EFI_IFR_OP_HEADER Header;1386} EFI_IFR_DIVIDE;13871388typedef struct _EFI_IFR_EQUAL {1389EFI_IFR_OP_HEADER Header;1390} EFI_IFR_EQUAL;13911392typedef struct _EFI_IFR_GREATER_EQUAL {1393EFI_IFR_OP_HEADER Header;1394} EFI_IFR_GREATER_EQUAL;13951396typedef struct _EFI_IFR_GREATER_THAN {1397EFI_IFR_OP_HEADER Header;1398} EFI_IFR_GREATER_THAN;13991400typedef struct _EFI_IFR_LESS_EQUAL {1401EFI_IFR_OP_HEADER Header;1402} EFI_IFR_LESS_EQUAL;14031404typedef struct _EFI_IFR_LESS_THAN {1405EFI_IFR_OP_HEADER Header;1406} EFI_IFR_LESS_THAN;14071408typedef struct _EFI_IFR_MATCH {1409EFI_IFR_OP_HEADER Header;1410} EFI_IFR_MATCH;14111412typedef struct _EFI_IFR_MATCH2 {1413EFI_IFR_OP_HEADER Header;1414EFI_GUID SyntaxType;1415} EFI_IFR_MATCH2;14161417typedef struct _EFI_IFR_MULTIPLY {1418EFI_IFR_OP_HEADER Header;1419} EFI_IFR_MULTIPLY;14201421typedef struct _EFI_IFR_MODULO {1422EFI_IFR_OP_HEADER Header;1423} EFI_IFR_MODULO;14241425typedef struct _EFI_IFR_NOT_EQUAL {1426EFI_IFR_OP_HEADER Header;1427} EFI_IFR_NOT_EQUAL;14281429typedef struct _EFI_IFR_OR {1430EFI_IFR_OP_HEADER Header;1431} EFI_IFR_OR;14321433typedef struct _EFI_IFR_SHIFT_LEFT {1434EFI_IFR_OP_HEADER Header;1435} EFI_IFR_SHIFT_LEFT;14361437typedef struct _EFI_IFR_SHIFT_RIGHT {1438EFI_IFR_OP_HEADER Header;1439} EFI_IFR_SHIFT_RIGHT;14401441typedef struct _EFI_IFR_SUBTRACT {1442EFI_IFR_OP_HEADER Header;1443} EFI_IFR_SUBTRACT;14441445typedef struct _EFI_IFR_CONDITIONAL {1446EFI_IFR_OP_HEADER Header;1447} EFI_IFR_CONDITIONAL;14481449//1450// Flags governing the matching criteria of EFI_IFR_FIND1451//1452#define EFI_IFR_FF_CASE_SENSITIVE 0x001453#define EFI_IFR_FF_CASE_INSENSITIVE 0x0114541455typedef struct _EFI_IFR_FIND {1456EFI_IFR_OP_HEADER Header;1457UINT8 Format;1458} EFI_IFR_FIND;14591460typedef struct _EFI_IFR_MID {1461EFI_IFR_OP_HEADER Header;1462} EFI_IFR_MID;14631464typedef struct _EFI_IFR_TOKEN {1465EFI_IFR_OP_HEADER Header;1466} EFI_IFR_TOKEN;14671468//1469// Flags specifying whether to find the first matching string1470// or the first non-matching string.1471//1472#define EFI_IFR_FLAGS_FIRST_MATCHING 0x001473#define EFI_IFR_FLAGS_FIRST_NON_MATCHING 0x0114741475typedef struct _EFI_IFR_SPAN {1476EFI_IFR_OP_HEADER Header;1477UINT8 Flags;1478} EFI_IFR_SPAN;14791480typedef struct _EFI_IFR_SECURITY {1481///1482/// Standard opcode header, where Header.Op = EFI_IFR_SECURITY_OP.1483///1484EFI_IFR_OP_HEADER Header;1485///1486/// Security permission level.1487///1488EFI_GUID Permissions;1489} EFI_IFR_SECURITY;14901491typedef struct _EFI_IFR_FORM_MAP_METHOD {1492///1493/// The string identifier which provides the human-readable name of1494/// the configuration method for this standards map form.1495///1496EFI_STRING_ID MethodTitle;1497///1498/// Identifier which uniquely specifies the configuration methods1499/// associated with this standards map form.1500///1501EFI_GUID MethodIdentifier;1502} EFI_IFR_FORM_MAP_METHOD;15031504typedef struct _EFI_IFR_FORM_MAP {1505///1506/// The sequence that defines the type of opcode as well as the length1507/// of the opcode being defined. Header.OpCode = EFI_IFR_FORM_MAP_OP.1508///1509EFI_IFR_OP_HEADER Header;1510///1511/// The unique identifier for this particular form.1512///1513EFI_FORM_ID FormId;1514///1515/// One or more configuration method's name and unique identifier.1516///1517// EFI_IFR_FORM_MAP_METHOD Methods[];1518} EFI_IFR_FORM_MAP;15191520typedef struct _EFI_IFR_SET {1521///1522/// The sequence that defines the type of opcode as well as the length1523/// of the opcode being defined. Header.OpCode = EFI_IFR_SET_OP.1524///1525EFI_IFR_OP_HEADER Header;1526///1527/// Specifies the identifier of a previously declared variable store to1528/// use when storing the question's value.1529///1530EFI_VARSTORE_ID VarStoreId;1531union {1532///1533/// A 16-bit Buffer Storage offset.1534///1535EFI_STRING_ID VarName;1536///1537/// A Name Value or EFI Variable name (VarName).1538///1539UINT16 VarOffset;1540} VarStoreInfo;1541///1542/// Specifies the type used for storage.1543///1544UINT8 VarStoreType;1545} EFI_IFR_SET;15461547typedef struct _EFI_IFR_GET {1548///1549/// The sequence that defines the type of opcode as well as the length1550/// of the opcode being defined. Header.OpCode = EFI_IFR_GET_OP.1551///1552EFI_IFR_OP_HEADER Header;1553///1554/// Specifies the identifier of a previously declared variable store to1555/// use when retrieving the value.1556///1557EFI_VARSTORE_ID VarStoreId;1558union {1559///1560/// A 16-bit Buffer Storage offset.1561///1562EFI_STRING_ID VarName;1563///1564/// A Name Value or EFI Variable name (VarName).1565///1566UINT16 VarOffset;1567} VarStoreInfo;1568///1569/// Specifies the type used for storage.1570///1571UINT8 VarStoreType;1572} EFI_IFR_GET;15731574typedef struct _EFI_IFR_READ {1575EFI_IFR_OP_HEADER Header;1576} EFI_IFR_READ;15771578typedef struct _EFI_IFR_WRITE {1579EFI_IFR_OP_HEADER Header;1580} EFI_IFR_WRITE;15811582typedef struct _EFI_IFR_MAP {1583EFI_IFR_OP_HEADER Header;1584} EFI_IFR_MAP;1585//1586// Definitions for Keyboard Package1587// Releated definitions are in Section of EFI_HII_DATABASE_PROTOCOL1588//15891590///1591/// Each enumeration values maps a physical key on a keyboard.1592///1593typedef enum {1594EfiKeyLCtrl,1595EfiKeyA0,1596EfiKeyLAlt,1597EfiKeySpaceBar,1598EfiKeyA2,1599EfiKeyA3,1600EfiKeyA4,1601EfiKeyRCtrl,1602EfiKeyLeftArrow,1603EfiKeyDownArrow,1604EfiKeyRightArrow,1605EfiKeyZero,1606EfiKeyPeriod,1607EfiKeyEnter,1608EfiKeyLShift,1609EfiKeyB0,1610EfiKeyB1,1611EfiKeyB2,1612EfiKeyB3,1613EfiKeyB4,1614EfiKeyB5,1615EfiKeyB6,1616EfiKeyB7,1617EfiKeyB8,1618EfiKeyB9,1619EfiKeyB10,1620EfiKeyRShift,1621EfiKeyUpArrow,1622EfiKeyOne,1623EfiKeyTwo,1624EfiKeyThree,1625EfiKeyCapsLock,1626EfiKeyC1,1627EfiKeyC2,1628EfiKeyC3,1629EfiKeyC4,1630EfiKeyC5,1631EfiKeyC6,1632EfiKeyC7,1633EfiKeyC8,1634EfiKeyC9,1635EfiKeyC10,1636EfiKeyC11,1637EfiKeyC12,1638EfiKeyFour,1639EfiKeyFive,1640EfiKeySix,1641EfiKeyPlus,1642EfiKeyTab,1643EfiKeyD1,1644EfiKeyD2,1645EfiKeyD3,1646EfiKeyD4,1647EfiKeyD5,1648EfiKeyD6,1649EfiKeyD7,1650EfiKeyD8,1651EfiKeyD9,1652EfiKeyD10,1653EfiKeyD11,1654EfiKeyD12,1655EfiKeyD13,1656EfiKeyDel,1657EfiKeyEnd,1658EfiKeyPgDn,1659EfiKeySeven,1660EfiKeyEight,1661EfiKeyNine,1662EfiKeyE0,1663EfiKeyE1,1664EfiKeyE2,1665EfiKeyE3,1666EfiKeyE4,1667EfiKeyE5,1668EfiKeyE6,1669EfiKeyE7,1670EfiKeyE8,1671EfiKeyE9,1672EfiKeyE10,1673EfiKeyE11,1674EfiKeyE12,1675EfiKeyBackSpace,1676EfiKeyIns,1677EfiKeyHome,1678EfiKeyPgUp,1679EfiKeyNLck,1680EfiKeySlash,1681EfiKeyAsterisk,1682EfiKeyMinus,1683EfiKeyEsc,1684EfiKeyF1,1685EfiKeyF2,1686EfiKeyF3,1687EfiKeyF4,1688EfiKeyF5,1689EfiKeyF6,1690EfiKeyF7,1691EfiKeyF8,1692EfiKeyF9,1693EfiKeyF10,1694EfiKeyF11,1695EfiKeyF12,1696EfiKeyPrint,1697EfiKeySLck,1698EfiKeyPause,1699EfiKeyIntl0,1700EfiKeyIntl1,1701EfiKeyIntl2,1702EfiKeyIntl3,1703EfiKeyIntl4,1704EfiKeyIntl5,1705EfiKeyIntl6,1706EfiKeyIntl7,1707EfiKeyIntl8,1708EfiKeyIntl91709} EFI_KEY;17101711typedef struct {1712///1713/// Used to describe a physical key on a keyboard.1714///1715EFI_KEY Key;1716///1717/// Unicode character code for the Key.1718///1719CHAR16 Unicode;1720///1721/// Unicode character code for the key with the shift key being held down.1722///1723CHAR16 ShiftedUnicode;1724///1725/// Unicode character code for the key with the Alt-GR being held down.1726///1727CHAR16 AltGrUnicode;1728///1729/// Unicode character code for the key with the Alt-GR and shift keys being held down.1730///1731CHAR16 ShiftedAltGrUnicode;1732///1733/// Modifier keys are defined to allow for special functionality that is not necessarily1734/// accomplished by a printable character. Many of these modifier keys are flags to toggle1735/// certain state bits on and off inside of a keyboard driver.1736///1737UINT16 Modifier;1738UINT16 AffectedAttribute;1739} EFI_KEY_DESCRIPTOR;17401741///1742/// A key which is affected by all the standard shift modifiers.1743/// Most keys would be expected to have this bit active.1744///1745#define EFI_AFFECTED_BY_STANDARD_SHIFT 0x000117461747///1748/// This key is affected by the caps lock so that if a keyboard driver1749/// would need to disambiguate between a key which had a "1" defined1750/// versus an "a" character. Having this bit turned on would tell1751/// the keyboard driver to use the appropriate shifted state or not.1752///1753#define EFI_AFFECTED_BY_CAPS_LOCK 0x000217541755///1756/// Similar to the case of CAPS lock, if this bit is active, the key1757/// is affected by the num lock being turned on.1758///1759#define EFI_AFFECTED_BY_NUM_LOCK 0x000417601761typedef struct {1762UINT16 LayoutLength;1763EFI_GUID Guid;1764UINT32 LayoutDescriptorStringOffset;1765UINT8 DescriptorCount;1766// EFI_KEY_DESCRIPTOR Descriptors[];1767} EFI_HII_KEYBOARD_LAYOUT;17681769typedef struct {1770EFI_HII_PACKAGE_HEADER Header;1771UINT16 LayoutCount;1772// EFI_HII_KEYBOARD_LAYOUT Layout[];1773} EFI_HII_KEYBOARD_PACKAGE_HDR;17741775//1776// Modifier values1777//1778#define EFI_NULL_MODIFIER 0x00001779#define EFI_LEFT_CONTROL_MODIFIER 0x00011780#define EFI_RIGHT_CONTROL_MODIFIER 0x00021781#define EFI_LEFT_ALT_MODIFIER 0x00031782#define EFI_RIGHT_ALT_MODIFIER 0x00041783#define EFI_ALT_GR_MODIFIER 0x00051784#define EFI_INSERT_MODIFIER 0x00061785#define EFI_DELETE_MODIFIER 0x00071786#define EFI_PAGE_DOWN_MODIFIER 0x00081787#define EFI_PAGE_UP_MODIFIER 0x00091788#define EFI_HOME_MODIFIER 0x000A1789#define EFI_END_MODIFIER 0x000B1790#define EFI_LEFT_SHIFT_MODIFIER 0x000C1791#define EFI_RIGHT_SHIFT_MODIFIER 0x000D1792#define EFI_CAPS_LOCK_MODIFIER 0x000E1793#define EFI_NUM_LOCK_MODIFIER 0x000F1794#define EFI_LEFT_ARROW_MODIFIER 0x00101795#define EFI_RIGHT_ARROW_MODIFIER 0x00111796#define EFI_DOWN_ARROW_MODIFIER 0x00121797#define EFI_UP_ARROW_MODIFIER 0x00131798#define EFI_NS_KEY_MODIFIER 0x00141799#define EFI_NS_KEY_DEPENDENCY_MODIFIER 0x00151800#define EFI_FUNCTION_KEY_ONE_MODIFIER 0x00161801#define EFI_FUNCTION_KEY_TWO_MODIFIER 0x00171802#define EFI_FUNCTION_KEY_THREE_MODIFIER 0x00181803#define EFI_FUNCTION_KEY_FOUR_MODIFIER 0x00191804#define EFI_FUNCTION_KEY_FIVE_MODIFIER 0x001A1805#define EFI_FUNCTION_KEY_SIX_MODIFIER 0x001B1806#define EFI_FUNCTION_KEY_SEVEN_MODIFIER 0x001C1807#define EFI_FUNCTION_KEY_EIGHT_MODIFIER 0x001D1808#define EFI_FUNCTION_KEY_NINE_MODIFIER 0x001E1809#define EFI_FUNCTION_KEY_TEN_MODIFIER 0x001F1810#define EFI_FUNCTION_KEY_ELEVEN_MODIFIER 0x00201811#define EFI_FUNCTION_KEY_TWELVE_MODIFIER 0x002118121813//1814// Keys that have multiple control functions based on modifier1815// settings are handled in the keyboard driver implementation.1816// For instance, PRINT_KEY might have a modifier held down and1817// is still a nonprinting character, but might have an alternate1818// control function like SYSREQUEST1819//1820#define EFI_PRINT_MODIFIER 0x00221821#define EFI_SYS_REQUEST_MODIFIER 0x00231822#define EFI_SCROLL_LOCK_MODIFIER 0x00241823#define EFI_PAUSE_MODIFIER 0x00251824#define EFI_BREAK_MODIFIER 0x002618251826#define EFI_LEFT_LOGO_MODIFIER 0x00271827#define EFI_RIGHT_LOGO_MODIFIER 0x00281828#define EFI_MENU_MODIFIER 0x002918291830///1831/// Animation IFR opcode1832///1833typedef struct _EFI_IFR_ANIMATION {1834///1835/// Standard opcode header, where Header.OpCode is1836/// EFI_IFR_ANIMATION_OP.1837///1838EFI_IFR_OP_HEADER Header;1839///1840/// Animation identifier in the HII database.1841///1842EFI_ANIMATION_ID Id;1843} EFI_IFR_ANIMATION;18441845///1846/// HII animation package header.1847///1848typedef struct _EFI_HII_ANIMATION_PACKAGE_HDR {1849///1850/// Standard package header, where Header.Type = EFI_HII_PACKAGE_ANIMATIONS.1851///1852EFI_HII_PACKAGE_HEADER Header;1853///1854/// Offset, relative to this header, of the animation information. If1855/// this is zero, then there are no animation sequences in the package.1856///1857UINT32 AnimationInfoOffset;1858} EFI_HII_ANIMATION_PACKAGE_HDR;18591860///1861/// Animation information is encoded as a series of blocks,1862/// with each block prefixed by a single byte header EFI_HII_ANIMATION_BLOCK.1863///1864typedef struct _EFI_HII_ANIMATION_BLOCK {1865UINT8 BlockType;1866// UINT8 BlockBody[];1867} EFI_HII_ANIMATION_BLOCK;18681869///1870/// Animation block types.1871///1872#define EFI_HII_AIBT_END 0x001873#define EFI_HII_AIBT_OVERLAY_IMAGES 0x101874#define EFI_HII_AIBT_CLEAR_IMAGES 0x111875#define EFI_HII_AIBT_RESTORE_SCRN 0x121876#define EFI_HII_AIBT_OVERLAY_IMAGES_LOOP 0x181877#define EFI_HII_AIBT_CLEAR_IMAGES_LOOP 0x191878#define EFI_HII_AIBT_RESTORE_SCRN_LOOP 0x1A1879#define EFI_HII_AIBT_DUPLICATE 0x201880#define EFI_HII_AIBT_SKIP2 0x211881#define EFI_HII_AIBT_SKIP1 0x221882#define EFI_HII_AIBT_EXT1 0x301883#define EFI_HII_AIBT_EXT2 0x311884#define EFI_HII_AIBT_EXT4 0x3218851886///1887/// Extended block headers used for variable sized animation records1888/// which need an explicit length.1889///18901891typedef struct _EFI_HII_AIBT_EXT1_BLOCK {1892///1893/// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT1.1894///1895EFI_HII_ANIMATION_BLOCK Header;1896///1897/// The block type.1898///1899UINT8 BlockType2;1900///1901/// Size of the animation block, in bytes, including the animation block header.1902///1903UINT8 Length;1904} EFI_HII_AIBT_EXT1_BLOCK;19051906typedef struct _EFI_HII_AIBT_EXT2_BLOCK {1907///1908/// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT2.1909///1910EFI_HII_ANIMATION_BLOCK Header;1911///1912/// The block type1913///1914UINT8 BlockType2;1915///1916/// Size of the animation block, in bytes, including the animation block header.1917///1918UINT16 Length;1919} EFI_HII_AIBT_EXT2_BLOCK;19201921typedef struct _EFI_HII_AIBT_EXT4_BLOCK {1922///1923/// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT4.1924///1925EFI_HII_ANIMATION_BLOCK Header;1926///1927/// The block type1928///1929UINT8 BlockType2;1930///1931/// Size of the animation block, in bytes, including the animation block header.1932///1933UINT32 Length;1934} EFI_HII_AIBT_EXT4_BLOCK;19351936typedef struct _EFI_HII_ANIMATION_CELL {1937///1938/// The X offset from the upper left hand corner of the logical1939/// window to position the indexed image.1940///1941UINT16 OffsetX;1942///1943/// The Y offset from the upper left hand corner of the logical1944/// window to position the indexed image.1945///1946UINT16 OffsetY;1947///1948/// The image to display at the specified offset from the upper left1949/// hand corner of the logical window.1950///1951EFI_IMAGE_ID ImageId;1952///1953/// The number of milliseconds to delay after displaying the indexed1954/// image and before continuing on to the next linked image. If value1955/// is zero, no delay.1956///1957UINT16 Delay;1958} EFI_HII_ANIMATION_CELL;19591960///1961/// An animation block to describe an animation sequence that does not cycle, and1962/// where one image is simply displayed over the previous image.1963///1964typedef struct _EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK {1965///1966/// This is image that is to be reference by the image protocols, if the1967/// animation function is not supported or disabled. This image can1968/// be one particular image from the animation sequence (if any one1969/// of the animation frames has a complete image) or an alternate1970/// image that can be displayed alone. If the value is zero, no image1971/// is displayed.1972///1973EFI_IMAGE_ID DftImageId;1974///1975/// The overall width of the set of images (logical window width).1976///1977UINT16 Width;1978///1979/// The overall height of the set of images (logical window height).1980///1981UINT16 Height;1982///1983/// The number of EFI_HII_ANIMATION_CELL contained in the1984/// animation sequence.1985///1986UINT16 CellCount;1987///1988/// An array of CellCount animation cells.1989///1990EFI_HII_ANIMATION_CELL AnimationCell[1];1991} EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK;19921993///1994/// An animation block to describe an animation sequence that does not cycle,1995/// and where the logical window is cleared to the specified color before1996/// the next image is displayed.1997///1998typedef struct _EFI_HII_AIBT_CLEAR_IMAGES_BLOCK {1999///2000/// This is image that is to be reference by the image protocols, if the2001/// animation function is not supported or disabled. This image can2002/// be one particular image from the animation sequence (if any one2003/// of the animation frames has a complete image) or an alternate2004/// image that can be displayed alone. If the value is zero, no image2005/// is displayed.2006///2007EFI_IMAGE_ID DftImageId;2008///2009/// The overall width of the set of images (logical window width).2010///2011UINT16 Width;2012///2013/// The overall height of the set of images (logical window height).2014///2015UINT16 Height;2016///2017/// The number of EFI_HII_ANIMATION_CELL contained in the2018/// animation sequence.2019///2020UINT16 CellCount;2021///2022/// The color to clear the logical window to before displaying the2023/// indexed image.2024///2025EFI_HII_RGB_PIXEL BackgndColor;2026///2027/// An array of CellCount animation cells.2028///2029EFI_HII_ANIMATION_CELL AnimationCell[1];2030} EFI_HII_AIBT_CLEAR_IMAGES_BLOCK;20312032///2033/// An animation block to describe an animation sequence that does not cycle,2034/// and where the screen is restored to the original state before the next2035/// image is displayed.2036///2037typedef struct _EFI_HII_AIBT_RESTORE_SCRN_BLOCK {2038///2039/// This is image that is to be reference by the image protocols, if the2040/// animation function is not supported or disabled. This image can2041/// be one particular image from the animation sequence (if any one2042/// of the animation frames has a complete image) or an alternate2043/// image that can be displayed alone. If the value is zero, no image2044/// is displayed.2045///2046EFI_IMAGE_ID DftImageId;2047///2048/// The overall width of the set of images (logical window width).2049///2050UINT16 Width;2051///2052/// The overall height of the set of images (logical window height).2053///2054UINT16 Height;2055///2056/// The number of EFI_HII_ANIMATION_CELL contained in the2057/// animation sequence.2058///2059UINT16 CellCount;2060///2061/// An array of CellCount animation cells.2062///2063EFI_HII_ANIMATION_CELL AnimationCell[1];2064} EFI_HII_AIBT_RESTORE_SCRN_BLOCK;20652066///2067/// An animation block to describe an animation sequence that continuously cycles,2068/// and where one image is simply displayed over the previous image.2069///2070typedef EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK EFI_HII_AIBT_OVERLAY_IMAGES_LOOP_BLOCK;20712072///2073/// An animation block to describe an animation sequence that continuously cycles,2074/// and where the logical window is cleared to the specified color before2075/// the next image is displayed.2076///2077typedef EFI_HII_AIBT_CLEAR_IMAGES_BLOCK EFI_HII_AIBT_CLEAR_IMAGES_LOOP_BLOCK;20782079///2080/// An animation block to describe an animation sequence that continuously cycles,2081/// and where the screen is restored to the original state before2082/// the next image is displayed.2083///2084typedef EFI_HII_AIBT_RESTORE_SCRN_BLOCK EFI_HII_AIBT_RESTORE_SCRN_LOOP_BLOCK;20852086///2087/// Assigns a new character value to a previously defined animation sequence.2088///2089typedef struct _EFI_HII_AIBT_DUPLICATE_BLOCK {2090///2091/// The previously defined animation ID with the exact same2092/// animation information.2093///2094EFI_ANIMATION_ID AnimationId;2095} EFI_HII_AIBT_DUPLICATE_BLOCK;20962097///2098/// Skips animation IDs.2099///2100typedef struct _EFI_HII_AIBT_SKIP1_BLOCK {2101///2102/// The unsigned 8-bit value to add to AnimationIdCurrent.2103///2104UINT8 SkipCount;2105} EFI_HII_AIBT_SKIP1_BLOCK;21062107///2108/// Skips animation IDs.2109///2110typedef struct _EFI_HII_AIBT_SKIP2_BLOCK {2111///2112/// The unsigned 16-bit value to add to AnimationIdCurrent.2113///2114UINT16 SkipCount;2115} EFI_HII_AIBT_SKIP2_BLOCK;21162117#pragma pack()21182119///2120/// References to string tokens must use this macro to enable scanning for2121/// token usages.2122///2123///2124/// STRING_TOKEN is not defined in UEFI specification. But it is placed2125/// here for the easy access by C files and VFR source files.2126///2127#define STRING_TOKEN(t) t21282129///2130/// IMAGE_TOKEN is not defined in UEFI specification. But it is placed2131/// here for the easy access by C files and VFR source files.2132///2133#define IMAGE_TOKEN(t) t21342135#endif213621372138