/** @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 - 2007, Intel Corporation | |
All rights reserved. This program and the accompanying materials | |
are licensed and made available under the terms and conditions of the BSD License | |
which accompanies this distribution. The full text of the license may be found at | |
http://opensource.org/licenses/bsd-license.php | |
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
@par Revision Reference: | |
These definitions are from UEFI2.1. | |
**/ | |
#ifndef __UEFI_INTERNAL_FORMREPRESENTATION_H__ | |
#define __UEFI_INTERNAL_FORMREPRESENTATION_H__ | |
// | |
// 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_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_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 L"x-UEFI" | |
#define UEFI_CONFIG_LANG2 L"x-i-UEFI" // BUGBUG, spec need to be updated. | |
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_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_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 union { | |
UINT8 u8; | |
UINT16 u16; | |
UINT32 u32; | |
UINT64 u64; | |
BOOLEAN b; | |
EFI_HII_TIME time; | |
EFI_HII_DATE date; | |
EFI_STRING_ID string; | |
} EFI_IFR_TYPE_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_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_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_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_CATENATE_OP 0x5E | |
#define EFI_IFR_GUID_OP 0x5F | |
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_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; | |
UINT16 VarStoreId; | |
EFI_GUID Guid; | |
UINT32 Attributes; | |
} EFI_IFR_VARSTORE_EFI; | |
typedef struct _EFI_IFR_VARSTORE_NAME_VALUE { | |
EFI_IFR_OP_HEADER Header; | |
UINT16 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; | |
} 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_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_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_RESET_BUTTON { | |
EFI_IFR_OP_HEADER Header; | |
EFI_IFR_QUESTION_HEADER Question; | |
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_REFRESH { | |
EFI_IFR_OP_HEADER Header; | |
UINT8 RefreshInterval; | |
} EFI_IFR_REFRESH; | |
typedef struct _EFI_IFR_VARSTORE_DEVICE { | |
EFI_IFR_OP_HEADER Header; | |
EFI_STRING_ID DevicePath; | |
} EFI_IFR_VARSTORE_DEVICE; | |
typedef struct _EFI_IFR_ONE_OF_OPTION { | |
EFI_IFR_OP_HEADER Header; | |
EFI_STRING_ID Option; | |
UINT8 Flags; | |
UINT8 Type; | |
EFI_IFR_TYPE_VALUE Value; | |
} EFI_IFR_ONE_OF_OPTION; | |
#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_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_LIST { | |
EFI_IFR_OP_HEADER Header; | |
EFI_QUESTION_ID QuestionId; | |
UINT16 ListLength; | |
UINT16 ValueList[1]; | |
} EFI_IFR_EQ_ID_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_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; | |
// | |
// 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 |