4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This file defines the encoding for the VFR (Visual Form Representation) language.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IFR is primarily consumed by the EFI presentation engine, and produced by EFI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync internal application and drivers as well as all add-in card option-ROM drivers
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This program and the accompanying materials are licensed and made available
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync under the terms and conditions of the BSD License which accompanies this
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync distribution. The full text of the license may be found at:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @par Revision Reference:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync These definitions are from UEFI2.1.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { 0x93039971, 0x8545, 0x4b04, { 0xb4, 0x5e, 0x32, 0xeb, 0x83, 0x26, 0x4, 0xe } }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// The following types are currently defined:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// HII package list
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Each package starts with a header, as defined above, which
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync indicates the size and type of the package. When added to a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync pointer pointing to the start of the header, Length points at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the next package. The package lists form a package list when
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync concatenated together and terminated with an
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_HII_PACKAGE_HEADER with a Type of EFI_HII_PACKAGE_END. The
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync type EFI_HII_PACKAGE_TYPE_GUID is used for vendor-defined HII
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync packages, whose contents are determined by the Guid. The range
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of package types starting with EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync through EFI_HII_PACKAGE_TYPE_SYSTEM_END are reserved for system
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync firmware implementers.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Length The size of the package in bytes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Type The package type. See EFI_HII_PACKAGE_TYPE_x,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Data The package data, the format of which is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync determined by Type.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // UINT8 Data[...];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// EFI_HII_PACKAGE_TYPE_x.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Simplified Font Package
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Contents of EFI_NARROW_GLYPH.Attributes
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // EFI_NARROW_GLYPH NarrowGlyphs[];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // EFI_WIDE_GLYPH WideGlyphs[];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Font Package
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 BitmapData[1]; // the number of bytes per bitmap can be calculated by ((Cell.Width+7)/8)*Cell.Height
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 BitmapData[1]; // the number of bytes per bitmap can be calculated by ((Cell.Width+7)/8)*Cell.Height
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 BitmapData[1]; // the number of bytes per bitmap can be calculated by ((Global.Cell.Width+7)/8)*Global.Cell.Height
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 BitmapData[1]; // the number of bytes per bitmap can be calculated by ((Global.Cell.Width+7)/8)*Global.Cell.Height
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Device Path Package
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // EFI_DEVICE_PATH_PROTOCOL DevicePath[];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// GUID Package
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Data per GUID definition may follow
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// String Package
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Image Packages
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _EFI_HII_IIBT_IMAGE_8BIT_PALETTE_BLOCK {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _EFI_HII_IIBT_IMAGE_8BIT_TRANS_BLOCK {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Forms Package
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // EFI_IFR_OP_HEADER OpCodeHeader;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // More op-codes follow
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef union {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // EFI_GUID ClassGuid[];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef union {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //Optional Data Follows
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Standard opcode header, where Header.Op = EFI_IFR_SECURITY_OP.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Security permission level.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// The string identifier which provides the human-readable name of
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// the configuration method for this standards map form.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Identifier which uniquely specifies the configuration methods
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// associated with this standards map form.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// The sequence that defines the type of opcode as well as the length
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// of the opcode being defined. Header.OpCode = EFI_IFR_FORM_MAP_OP.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// The unique identifier for this particular form.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// One or more configuration method's name and unique identifier.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // EFI_IFR_FORM_MAP_METHOD Methods[];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// The sequence that defines the type of opcode as well as the length
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// of the opcode being defined. Header.OpCode = EFI_IFR_SET_OP.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Specifies the identifier of a previously declared variable store to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// use when storing the question's value.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// A 16-bit Buffer Storage offset.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// A Name Value or EFI Variable name (VarName).
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Specifies the type used for storage.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// The sequence that defines the type of opcode as well as the length
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// of the opcode being defined. Header.OpCode = EFI_IFR_GET_OP.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Specifies the identifier of a previously declared variable store to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// use when retrieving the value.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// A 16-bit Buffer Storage offset.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// A Name Value or EFI Variable name (VarName).
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Specifies the type used for storage.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Keyboard Package
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef enum {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// A key which is affected by all the standard shift modifiers.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Most keys would be expected to have this bit active.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// This key is affected by the caps lock so that if a keyboard driver
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// would need to disambiguate between a key which had a "1" defined
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// versus a "a" character. Having this bit turned on would tell
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// the keyboard driver to use the appropriate shifted state or not.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Similar to the case of CAPS lock, if this bit is active, the key
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// is affected by the num lock being turned on.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // EFI_KEY_DESCRIPTOR Descriptors[];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // EFI_HII_KEYBOARD_LAYOUT Layout[];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Modifier values
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Keys that have multiple control functions based on modifier
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// settings are handled in the keyboard driver implementation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// For instance PRINT_KEY might have a modifier held down and
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// is still a nonprinting character, but might have an alternate
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// control function like SYSREQUEST
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// References to string tokens must use this macro to enable scanning for
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// token usages.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// STRING_TOKEN is not defined in UEFI specification. But it is placed
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// here for the easy access by C files and VFR source files.