The file provides Database manager for HII-related data\r
structures.\r
\r
- Copyright (c) 2006 - 2007, Intel Corporation\r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
- Module Name: HiiDatabase.h\r
+Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials are licensed and made available under \r
+the terms and conditions of the BSD License that accompanies this distribution. \r
+The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php. \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
\r
**/\r
\r
\r
typedef struct _EFI_HII_DATABASE_PROTOCOL EFI_HII_DATABASE_PROTOCOL;\r
\r
-//\r
-// ConfigurationS of HII.\r
-// \r
-#define GLYPH_WIDTH 8\r
-#define GLYPH_HEIGHT 19\r
-\r
-/**\r
- \r
- Each package starts with a header, as defined above, which \r
- indicates the size and type of the package. When added to a \r
- pointer pointing to the start of the header, Length points at \r
- the next package. The package lists form a package list when \r
- concatenated together and terminated with an \r
- EFI_HII_PACKAGE_HEADER with a Type of EFI_HII_PACKAGE_END. The \r
- type EFI_HII_PACKAGE_TYPE_GUID is used for vendor-defined HII \r
- packages, whose contents are determined by the Guid. The range \r
- of package types starting with EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN \r
- through EFI_HII_PACKAGE_TYPE_SYSTEM_END are reserved for system \r
- firmware implementers. \r
- \r
- @param Length The size of the package in bytes.\r
- \r
- @param Type The package type. See EFI_HII_PACKAGE_TYPE_x,\r
- below.\r
- \r
- @param Data The package data, the format of which is\r
- determined by Type.\r
- \r
-**/\r
-typedef struct {\r
- UINT32 Length:24;\r
- UINT32 Type:8;\r
- // UINT8 Data[...];\r
-} EFI_HII_PACKAGE_HEADER;\r
-\r
-//\r
-// EFI_HII_PACKAGE_TYPE_x.\r
-// \r
-#define EFI_HII_PACKAGE_TYPE_ALL 0x00\r
-#define EFI_HII_PACKAGE_TYPE_GUID 0x01\r
-#define EFI_HII_PACKAGE_FORM_CONFIG 0x02\r
-#define EFI_HII_PACKAGE_FORM_APP 0x03\r
-#define EFI_HII_PACKAGE_STRINGS 0x04\r
-#define EFI_HII_PACKAGE_FONTS 0x05\r
-#define EFI_HII_PACKAGE_IMAGES 0x06\r
-#define EFI_HII_PACKAGE_SIMPLE_FONTS 0x07\r
-#define EFI_HII_PACKAGE_DEVICE_PATH 0x08\r
-#define EFI_HII_PACKAGE_END 0x09\r
-#define EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN 0xE0\r
-#define EFI_HII_PACKAGE_TYPE_SYSTEM_END 0xFF\r
-\r
-\r
-/**\r
- \r
- This header uniquely identifies the package list.and is placed \r
- in front of a list of packages. Package lists with the same \r
- PackageListGuid value should contain the same data set. Updated \r
- versions should have updated GUIDs. \r
- \r
- @param PackageListGuid The unique identifier applied to the\r
- list of packages which follows.\r
- \r
- \r
- @param PackageLength The size of the package list (in\r
- bytes), including the header.\r
-\r
-**/\r
-typedef struct {\r
- EFI_GUID PackageListGuid;\r
- UINT32 PackagLength;\r
-} EFI_HII_PACKAGE_LIST_HEADER;\r
-\r
-/**\r
-\r
- The fonts must be presented in Unicode sort order. That is,\r
- the primary sort key is the UnicodeWeight and the secondary\r
- sort key is the SurrogateWeight. It is up to developers who\r
- manage fonts to choose efficient mechanisms for accessing\r
- fonts. The contiguous presentation can easily be used because\r
- narrow and wide glyphs are not intermixed, so a binary search\r
- is possible (hence the requirement that the glyphs be sorted\r
- by weight).\r
-\r
- @param Header The header contains a Length and Type field.\r
- In the case of a font package, the type will\r
- be EFI_HII_PACKAGE_SIMPLE_FONTS and the length\r
- will be the total size of the font package\r
- including the size of the narrow and wide\r
- glyphs. See EFI_HII_PACKAGE_HEADER.\r
-\r
- @param NumberOfNarrowGlyphs The number of NarrowGlyphs that\r
- are included in the font package.\r
-\r
- @param NumberOfWideGlyphs The number of WideGlyphs that are\r
- included in the font package.\r
-\r
- @param NarrowGlyphs An array of EFI_NARROW_GLYPH entries.\r
- The number of entries is specified by\r
- NumberOfNarrowGlyphs.\r
-\r
- @param WideGlyphs An array of EFI_WIDE_GLYPH entries. The\r
- number of entries is specified by\r
- NumberOfWideGlyphs. To calculate the\r
- offset of WideGlyphs, use the offset of\r
- NarrowGlyphs and add the size of\r
- EFI_NARROW_GLYPH multiplied by the\r
- NumberOfNarrowGlyphs.\r
-\r
-*/\r
-typedef struct _EFI_HII_SIMPLE_FONT_PACKAGE_HDR {\r
- EFI_HII_PACKAGE_HEADER Header;\r
- UINT16 NumberOfNarrowGlyphs;\r
- UINT16 NumberOfWideGlyphs;\r
- // EFI_NARROW_GLYPH NarrowGlyphs[];\r
- // EFI_WIDE_GLYPH WideGlyphs[];\r
-} EFI_HII_SIMPLE_FONT_PACKAGE_HDR;\r
-\r
-//\r
-// Contents of EFI_NARROW_GLYPH.Attributes\r
-//\r
-#define EFI_GLYPH_NON_SPACING 0x01\r
-#define EFI_GLYPH_WIDE 0x02\r
-\r
-/**\r
-\r
- Glyphs are represented by two structures, one each for the two\r
- sizes of glyphs. The narrow glyph (EFI_NARROW_GLYPH) is the\r
- normal glyph used for text display.\r
-\r
- @param UnicodeWeight The Unicode representation of the glyph.\r
- The term weight is the technical term\r
- for a character value.\r
-\r
- @param Attributes The data element containing the glyph\r
- definitions; see Related Definitions\r
- below.\r
-\r
- @param GlyphCol1 The column major glyph representation of the\r
- character. Bits with values of one\r
- indicate that the corresponding pixel is to\r
- be on when normally displayed; those with\r
- zero are off.\r
-\r
-**/\r
-typedef struct {\r
- CHAR16 UnicodeWeight;\r
- UINT8 Attributes;\r
- UINT8 GlyphCol1[19];\r
-} EFI_NARROW_GLYPH;\r
-\r
-/**\r
- \r
- Glyphs are represented via the two structures, one each for the\r
- two sizes of glyphs. The wide glyph (EFI_WIDE_GLYPH) is large\r
- enough to display logographic characters.\r
-\r
- @param UnicodeWeight The Unicode representation of the glyph.\r
- The term weight is the technical term\r
- for a character value.\r
-\r
- @param Attributes The data element containing the glyph\r
- definitions; see Related Definitions in\r
- EFI_NARROW_GLYPH for attribute values.\r
- \r
- @param GlyphCol1, GlyphCol2 The column major glyph\r
- representation of the character.\r
- Bits with values of one indicate\r
- that the corresponding pixel is\r
- to be on when normally\r
- displayed; those with zero are\r
- off.\r
- \r
- @param Pad Ensures that sizeof(EFI_WIDE_GLYPH) is twice the\r
- sizeof(EFI_NARROW_GLYPH). The contents of Pad must\r
- bezero.\r
-\r
-\r
-**/\r
-typedef struct {\r
- CHAR16 UnicodeWeight;\r
- UINT8 Attributes;\r
- UINT8 GlyphCol1[GLYPH_HEIGHT];\r
- UINT8 GlyphCol2[GLYPH_HEIGHT];\r
- UINT8 Pad[3];\r
-} EFI_WIDE_GLYPH;\r
-\r
-\r
-//\r
-// EFI_HII_FONT_STYLE\r
-// \r
-typedef UINT32 EFI_HII_FONT_STYLE;\r
-#define EFI_HII_FONT_STYLE_BOLD 0x00000001\r
-#define EFI_HII_FONT_STYLE_ITALIC 0x00000002\r
-#define EFI_HII_FONT_STYLE_EMBOSS 0x00010000\r
-#define EFI_HII_FONT_STYLE_OUTLINE 0x00020000\r
-#define EFI_HII_FONT_STYLE_SHADOW 0x00040000\r
-#define EFI_HII_FONT_STYLE_UNDERLINE 0x00080000\r
-#define EFI_HII_FONT_STYLE_DBL_UNDER 0x00100000\r
-\r
-//\r
-// EFI_HII_GLYPH_BLOCK.BlockType\r
-// \r
-#define EFI_HII_GIBT_END 0x00\r
-#define EFI_HII_GIBT_GLYPH 0x10\r
-#define EFI_HII_GIBT_GLYPHS 0x11\r
-#define EFI_HII_GIBT_GLYPH_DEFAULT 0x12\r
-#define EFI_HII_GIBT_GLYPHS_DEFAULT 0x13\r
-#define EFI_HII_GIBT_DUPLICATE 0x20\r
-#define EFI_HII_GIBT_SKIP2 0x21 \r
-#define EFI_HII_GIBT_SKIP1 0x22\r
-#define EFI_HII_GIBT_DEFAULTS 0x23\r
-#define EFI_HII_GIBT_EXT1 0x30\r
-#define EFI_HII_GIBT_EXT2 0x31\r
-#define EFI_HII_GIBT_EXT4 0x32\r
-\r
-/**\r
-\r
- EFI_HII_GIBT_END block is found. When processing the glyph\r
- blocks, each block refers to the current character value\r
- (CharValueCurrent), which is initially set to one (1). Glyph\r
- blocks of an unknown type should be skipped. If they cannot be\r
- skipped, then processing halts.\r
-\r
-**/\r
-typedef struct _EFI_HII_GLYPH_BLOCK {\r
- UINT8 BlockType;\r
- UINT8 BlockBody[1];\r
-} EFI_HII_GLYPH_BLOCK;\r
-\r
-\r
-/**\r
-\r
- @param Width Width of the character or character cell, in\r
- pixels. For fixed-pitch fonts, this is the same\r
- as the advance.\r
-\r
- @param Height Height of the character or character cell, in\r
- pixels.\r
-\r
- @param OffsetX Offset to the horizontal edge of the character\r
- cell.\r
-\r
- @param OffsetY Offset to the vertical edge of the character\r
- cell.\r
-\r
- @param AdvanceX Number of pixels to advance to the right\r
- when moving from the origin of the current\r
- glyph to the origin of the next glyph.\r
- \r
-**/\r
-typedef struct _EFI_HII_GLYPH_INFO {\r
- UINT16 Width;\r
- UINT16 Height;\r
- INT16 OffsetX;\r
- INT16 OffsetY;\r
- INT16 AdvanceX;\r
-} EFI_HII_GLYPH_INFO;\r
-\r
-\r
-/**\r
- \r
- Changes the default cell information used for subsequent\r
- EFI_HII_GIBT_GLYPH_DEFAULT and EFI_HII_GIBT_GLYPHS_DEFAULT glyph\r
- blocks. The cell information described by Cell remains in effect\r
- until the next EFI_HII_GIBT_DEFAULTS is found. Prior to the\r
- first EFI_HII_GIBT_DEFAULTS block, the cell information in the\r
- fixed header are used.\r
-\r
- @param Header Standard glyph block header, where\r
- Header.BlockType = EFI_HII_GIBT_DEFAULTS.\r
- \r
- @param Cell The new default cell information which will be\r
- applied to all subsequent GLYPH_DEFAULT and\r
- GLYPHS_DEFAULT blocks.\r
-\r
-**/\r
-typedef struct _EFI_HII_GIBT_DEFAULTS_BLOCK {\r
- EFI_HII_GLYPH_BLOCK Header;\r
- EFI_HII_GLYPH_INFO Cell;\r
-} EFI_HII_GIBT_DEFAULTS_BLOCK;\r
-\r
\r
-/**\r
- \r
- Indicates that the glyph with character value CharValueCurrent\r
- has the same glyph as a previously defined character value and\r
- increments CharValueCurrent by one.\r
-\r
- @param Header Standard glyph block header, where\r
- Header.BlockType = EFI_HII_GIBT_DUPLICATE.\r
-\r
- @param CharValue The previously defined character value with\r
- the exact same glyph.\r
-\r
-**/\r
-typedef struct _EFI_HII_GIBT_DUPLICATE_BLOCK {\r
- EFI_HII_GLYPH_BLOCK Header;\r
- CHAR16 CharValue;\r
-} EFI_HII_GIBT_DUPLICATE_BLOCK;\r
-\r
-\r
-/**\r
- \r
- Any glyphs with a character value greater than or equal to\r
- CharValueCurrent are empty.\r
-\r
- @param Header Standard glyph block header, where\r
- Header.BlockType = EFI_HII_GIBT_END.\r
-\r
-**/\r
-typedef struct _EFI_GLYPH_GIBT_END_BLOCK {\r
- EFI_HII_GLYPH_BLOCK Header;\r
-} EFI_GLYPH_GIBT_END_BLOCK;\r
-\r
-/**\r
- \r
- These are reserved for future expansion, with length bytes\r
- included so that they can be easily skipped.\r
-\r
- @param Header Standard glyph block header, where\r
- Header.BlockType = EFI_HII_GIBT_EXT1,\r
- EFI_HII_GIBT_EXT2 or EFI_HII_GIBT_EXT4.\r
-\r
- @param Length Size of the glyph block, in bytes.\r
-\r
-**/\r
-typedef struct _EFI_HII_GIBT_EXT1_BLOCK {\r
- EFI_HII_GLYPH_BLOCK Header;\r
- UINT8 BlockType2;\r
- UINT8 Length;\r
-} EFI_HII_GIBT_EXT1_BLOCK;\r
-\r
-\r
-/**\r
- \r
- These are reserved for future expansion, with length bytes\r
- included so that they can be easily skipped.\r
-\r
- @param Header Standard glyph block header, where\r
- Header.BlockType = EFI_HII_GIBT_EXT1,\r
- EFI_HII_GIBT_EXT2 or EFI_HII_GIBT_EXT4.\r
-\r
- @param Length Size of the glyph block, in bytes.\r
-\r
-**/\r
-typedef struct _EFI_HII_GIBT_EXT2_BLOCK {\r
- EFI_HII_GLYPH_BLOCK Header;\r
- UINT8 BlockType2;\r
- UINT16 Length;\r
-} EFI_HII_GIBT_EXT2_BLOCK;\r
-\r
-/**\r
- \r
- These are reserved for future expansion, with length bytes\r
- included so that they can be easily skipped.\r
-\r
- @param Header Standard glyph block header, where\r
- Header.BlockType = EFI_HII_GIBT_EXT1,\r
- EFI_HII_GIBT_EXT2 or EFI_HII_GIBT_EXT4.\r
-\r
- @param Length Size of the glyph block, in bytes.\r
-\r
-**/\r
-typedef struct _EFI_HII_GIBT_EXT4_BLOCK {\r
- EFI_HII_GLYPH_BLOCK Header;\r
- UINT8 BlockType2;\r
- UINT32 Length;\r
-} EFI_HII_GIBT_EXT4_BLOCK;\r
-\r
-\r
-/**\r
- \r
- This block provides the bitmap for the character with the value\r
- CharValueCurrent and increments CharValueCurrent by one. Each\r
- glyph contains a glyph width and height, a drawing offset,\r
- number of pixels to advance after drawing and then the encoded\r
- bitmap.\r
-\r
- @param Header Standard glyph block header, where\r
- Header.BlockType = EFI_HII_GIBT_GLYPH.\r
-\r
- @param Cell Contains the width and height of the encoded\r
- bitmap (Cell.Width and Cell.Height), the number\r
- of pixels (signed) right of the character cell\r
- origin where the left edge of the bitmap should\r
- be placed (Cell.OffsetX), the number of pixels\r
- above the character cell origin where the top\r
- edge of the bitmap should be placed\r
- (Cell.OffsetY) and the number of pixels (signed)\r
- to move right to find the origin for the next\r
- charactercell (Cell.AdvanceX).\r
-\r
- @param GlyphCount The number of glyph bitmaps.\r
-\r
- @param BitmapData The bitmap data specifies a series of\r
- pixels, one bit per pixel, left-to-right,\r
- top-tobottom. Each glyph bitmap only\r
- encodes the portion of the bitmap enclosed\r
- by its character-bounding box, but the\r
- entire glyph is padded out to the nearest\r
- byte. The number of bytes per bitmap can\r
- be calculated as: ((Cell.Width + 7)/8) *\r
- Cell.Height.\r
-\r
-\r
-**/\r
-typedef struct _EFI_HII_GIBT_GLYPH_BLOCK {\r
- EFI_HII_GLYPH_BLOCK Header;\r
- EFI_HII_GLYPH_INFO Cell;\r
- UINT16 GlyphCount;\r
- UINT8 BitmapData[1];\r
-} EFI_HII_GIBT_GLYPH_BLOCK;\r
-\r
-/**\r
- \r
- Provides the bitmaps for the characters with the values\r
- CharValueCurrent through CharValueCurrent + Count -1 and\r
- increments CharValueCurrent by Count. These glyphs have\r
- identical cell information and the encoded bitmaps are exactly\r
- the same number of byes.\r
-\r
- @param Header Standard glyph block header, where\r
- Header.BlockType = EFI_HII_GIBT_GLYPHS.\r
-\r
- @param Cell Contains the width and height of the encoded\r
- bitmap (Cell.Width and Cell.Height), the\r
- number of pixels (signed) right of the\r
- character cell origin where the left edge of\r
- the bitmap should be placed (Cell.OffsetX),\r
- the number of pixels above the character cell\r
- origin where the top edge of the bitmap should\r
- be placed (Cell.OffsetY) and the number of\r
- pixels(signed) to move right to find the\r
- origin for the next character cell\r
- (Cell.AdvanceX).\r
-\r
- @param BitmapData The bitmap data specifies a series of\r
- pixels, one bit per pixel, left-to-right,\r
- top-tobottom, for each glyph. Each glyph\r
- bitmap only encodes the portion of the\r
- bitmap enclosed by its character-bounding\r
- box. The number of bytes per bitmap can be\r
- calculated as: ((Cell.Width + 7)/8) *\r
- Cell.Height.\r
-\r
-**/\r
-typedef struct _EFI_HII_GIBT_GLYPHS_BLOCK {\r
- EFI_HII_GLYPH_BLOCK Header;\r
- EFI_HII_GLYPH_INFO Cell;\r
- UINT8 BitmapData[1];\r
-} EFI_HII_GIBT_GLYPHS_BLOCK;\r
-\r
-/**\r
- \r
- Provides the bitmap for the character with the value\r
- CharValueCurrent and increments CharValueCurrent by 1. This\r
- glyph uses the default cell information. The default cell\r
- information is found in the font header or the most recently\r
- processed EFI_HII_GIBT_DEFAULTS.\r
-\r
- @param Header Standard glyph block header, where\r
- Header.BlockType = EFI_HII_GIBT_GLYPH_DEFAULT.\r
-\r
- @param BitmapData The bitmap data specifies a series of\r
- pixels, one bit per pixel, left-to-right,\r
- top-tobottom. Each glyph bitmap only\r
- encodes the portion of the bitmap enclosed\r
- by its character-bounding box. The number\r
- of bytes per bitmap can be calculated as:\r
- ((Global.Cell.Width + 7)/8) *\r
- Global.Cell.Height.\r
-\r
-**/\r
-typedef struct _EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK {\r
- EFI_HII_GLYPH_BLOCK Header;\r
- UINT8 BitmapData[1];\r
-} EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK;\r
-\r
-\r
-\r
-\r
-/**\r
- \r
- Provides the bitmaps for the characters with the values\r
- CharValueCurrent through CharValueCurrent + Count -1 and\r
- increments CharValueCurrent by Count. These glyphs use the\r
- default cell information and the encoded bitmaps have exactly\r
- the same number of byes.\r
-\r
- @param Header Standard glyph block header, where\r
- Header.BlockType =\r
- EFI_HII_GIBT_GLYPHS_DEFAULT.\r
-\r
- @param Count Number of glyphs in the glyph block.\r
-\r
- @param BitmapData The bitmap data specifies a series of\r
- pixels, one bit per pixel, left-to-right,\r
- top-tobottom, for each glyph. Each glyph\r
- bitmap only encodes the portion of the\r
- bitmap enclosed by its character-bounding\r
- box. The number of bytes per bitmap can be\r
- calculated as: ((Global.Cell.Width + 7)/8)\r
- Global.Cell.Height.\r
-\r
-**/\r
-typedef struct _EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK {\r
- EFI_HII_GLYPH_BLOCK Header;\r
- UINT16 Count;\r
- UINT8 BitmapData[1];\r
-} EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK;\r
-\r
-/**\r
- \r
- Increments the current character value CharValueCurrent by the\r
- number specified.\r
-\r
- @param Header Standard glyph block header, where BlockType =\r
- EFI_HII_GIBT_SKIP1 or EFI_HII_GIBT_SKIP2.\r
-\r
- @param SkipCount The unsigned 8- or 16-bit value to add to\r
- CharValueCurrent.\r
-\r
-**/\r
-typedef struct _EFI_HII_GIBT_SKIP2_BLOCK {\r
- EFI_HII_GLYPH_BLOCK Header;\r
- UINT16 SkipCount;\r
-} EFI_HII_GIBT_SKIP2_BLOCK;\r
-\r
-\r
-/**\r
- \r
- Increments the current character value CharValueCurrent by the\r
- number specified.\r
-\r
- @param Header Standard glyph block header, where BlockType =\r
- EFI_HII_GIBT_SKIP1 or EFI_HII_GIBT_SKIP2.\r
-\r
- @param SkipCount The unsigned 8- or 16-bit value to add to\r
- CharValueCurrent.\r
-\r
-**/\r
-typedef struct _EFI_HII_GIBT_SKIP1_BLOCK {\r
- EFI_HII_GLYPH_BLOCK Header;\r
- UINT8 SkipCount;\r
-} EFI_HII_GIBT_SKIP1_BLOCK;\r
-\r
-\r
-/**\r
- \r
- This package is created by NewPackageList() when the package\r
- list is first added to the HII database by locating the\r
- EFI_DEVICE_PATH_PROTOCOL attached to the driver handle passed in\r
- to that function.\r
- \r
-**/\r
-typedef EFI_DEVICE_PATH_PROTOCOL EFI_HII_DEVICE_PATH_PACKAGE_HDR;\r
-\r
-\r
-/**\r
- \r
- This is a free-form package type designed to allow extensibility\r
- by allowing the format to be specified using Guid.\r
-\r
- @param Guid Identifier which describes the remaining data\r
- within the package.\r
-\r
-**/\r
-typedef struct _EFI_HII_GUID_PACKAGE_HDR {\r
- EFI_GUID Guid;\r
-} EFI_HII_GUID_PACKAGE_HDR;\r
-\r
-\r
-/**\r
- \r
- The Strings package record describes the mapping between string\r
- identifiers and the actual text of the strings themselves. The\r
- package consists of three parts: a fixed header, the string\r
- information and the font information.\r
-\r
- @param Header The standard package header, where Header.Type\r
- = EFI_HII_PACKAGE_STRINGS.\r
-\r
- @param HdrSize Size of this header.\r
-\r
- @param StringInfoOffset Offset, relative to the start of\r
- this header, of the string information.\r
-\r
- @param LanguageWindow Specifies the default values placed in\r
- the static and dynamic windows before\r
- processing each SCSU-encoded strings.\r
-\r
-\r
- @param LanguageName String identifier within the current\r
- string package of the full name of the\r
- language specified by Language. Language\r
- Language of the strings, as specified by\r
- RFC 3066.\r
-\r
-**/\r
-typedef struct _EFI_HII_STRING_PACKAGE_HDR {\r
- EFI_HII_PACKAGE_HEADER Header;\r
- UINT32 HdrSize;\r
- UINT32 StringInfoOffset;\r
- CHAR16 LanguageWindow[16];\r
- EFI_STRING_ID LanguageName;\r
- CHAR8 Language[1];\r
-} EFI_HII_STRING_PACKAGE_HDR;\r
-\r
-\r
-\r
-/**\r
-\r
- The fixed header consists of a standard record header and then\r
- the character values in this section, the flags (including the\r
- encoding method) and the offsets of the glyph information, the\r
- glyph bitmaps and the character map.\r
-\r
- @param Header The standard package header, where Header.Size\r
- EFI_HII_PACKAGE_FONTS.\r
-\r
- @param HdrSize Size of this header.\r
-\r
- @param GlyphInfoOffset The offset, relative to the start of\r
- this header, of a series of\r
- variable-length glyph blocks, each\r
- describing information about the\r
- bitmap associated with a glyph.\r
-\r
- @param Cell This contains the measurement of the widest and\r
- tallest characters in the font (Cell.Width and\r
- Cell.Height). It also contains the offset to the\r
- horizontal and vertical origin point of the\r
- character cell (Cell.OffsetX and Cell.OffsetY).\r
- Finally, it contains the default AdvanceX. The\r
- individual glyph's OffsetX and OffsetY value is\r
- added to this position to determine where to\r
- draw the top-left pixel of the character's\r
- glyph. The character glyph's AdvanceX is added\r
- to this position to determine the origin point\r
- for the next character.\r
-\r
- @param FontStyle The design style of the font, 1 bit per\r
- style. See EFI_HII_FONT_STYLE.\r
-\r
- @param FontFamily The null-terminated string with the name\r
- of the font family to which the font\r
- belongs.\r
-\r
-**/\r
-typedef struct _EFI_HII_FONT_PACKAGE_HDR {\r
- EFI_HII_PACKAGE_HEADER Header;\r
- UINT32 HdrSize;\r
- UINT32 GlyphBlockOffset;\r
- EFI_HII_GLYPH_INFO Cell;\r
- EFI_HII_FONT_STYLE FontStyle;\r
- CHAR16 FontFamily[1];\r
-} EFI_HII_FONT_PACKAGE_HDR;\r
-\r
-\r
-//\r
-// EFI_HII_STRING_BLOCK.BlockType\r
-// \r
-#define FI_HII_SIBT_END 0x00\r
-#define EFI_HII_SIBT_STRING_SCSU 0x10\r
-#define EFI_HII_SIBT_STRING_SCSU_FONT 0x11\r
-#define EFI_HII_SIBT_STRINGS_SCSU 0x12\r
-#define EFI_HII_SIBT_STRINGS_SCSU_FONT 0x13\r
-#define EFI_HII_SIBT_STRING_UCS2 0x14\r
-#define EFI_HII_SIBT_STRING_UCS2_FONT 0x15\r
-#define EFI_HII_SIBT_STRINGS_UCS2 0x16\r
-#define EFI_HII_SIBT_STRINGS_UCS2_FONT 0x17\r
-#define EFI_HII_SIBT_DUPLICATE 0x20\r
-#define EFI_HII_SIBT_SKIP2 0x21\r
-#define EFI_HII_SIBT_SKIP1 0x22\r
-#define EFI_HII_SIBT_EXT1 0x30\r
-#define EFI_HII_SIBT_EXT2 0x31\r
-#define EFI_HII_SIBT_EXT4 0x32\r
-#define EFI_HII_SIBT_FONT 0x40\r
-\r
-/**\r
- \r
- String blocks specify the text and font for the current string\r
- identifier and increment to the next string identifier.\r
-**/\r
-typedef struct {\r
- UINT8 BlockType;\r
- UINT8 BlockBody[1];\r
-} EFI_HII_STRING_BLOCK;\r
-\r
-\r
-/**\r
- \r
- Indicates that the string with string identifier\r
- StringIdCurrent is the same as a previously defined string and\r
- increments StringIdCurrent by one.\r
- \r
- @param Header Standard string block header, where\r
- Header.BlockType = EFI_HII_SIBT_DUPLICATE.\r
- \r
- @param StringId The string identifier of a previously\r
- defined string with the exact same string\r
- text. Description\r
-\r
-\r
-**/\r
-typedef struct _EFI_HII_SIBT_DUPLICATE_BLOCK {\r
- EFI_HII_STRING_BLOCK Header;\r
- EFI_STRING_ID StringId;\r
-} EFI_HII_SIBT_DUPLICATE_BLOCK;\r
-\r
-/**\r
- \r
- Any strings with a string identifier greater than or equal to\r
- StringIdCurrent are empty.\r
-\r
- @param Header Standard string block header, where\r
- Header.BlockType = EFI_HII_SIBT_END.\r
-\r
-**/\r
-typedef struct _EFI_HII_SIBT_END_BLOCK {\r
- EFI_HII_STRING_BLOCK Header;\r
-} EFI_HII_SIBT_END_BLOCK;\r
-\r
-\r
-/**\r
- \r
- These are reserved for future expansion, with length bytes\r
- included so that they can be easily skip\r
-\r
- @param Header Standard string block header, where\r
- Header.BlockType = EFI_HII_SIBT_EXT1,\r
- EFI_HII_SIBT_EXT2 or EFI_HII_SIBT_EXT4.\r
- \r
- @param Length Size of the string block, in bytes.\r
-\r
-**/\r
-typedef struct _EFI_HII_SIBT_EXT1_BLOCK {\r
- EFI_HII_STRING_BLOCK Header;\r
- UINT8 BlockType2;\r
- UINT8 Length;\r
-} EFI_HII_SIBT_EXT1_BLOCK;\r
-\r
-/**\r
- \r
- These are reserved for future expansion, with length bytes\r
- included so that they can be easily skip\r
-\r
- @param Header Standard string block header, where\r
- Header.BlockType = EFI_HII_SIBT_EXT1,\r
- EFI_HII_SIBT_EXT2 or EFI_HII_SIBT_EXT4.\r
- \r
- @param Length Size of the string block, in bytes.\r
-\r
-**/\r
-typedef struct _EFI_HII_SIBT_EXT2_BLOCK {\r
- EFI_HII_STRING_BLOCK Header;\r
- UINT8 BlockType2;\r
- UINT16 Length;\r
-} EFI_HII_SIBT_EXT2_BLOCK;\r
-\r
-/**\r
- \r
- These are reserved for future expansion, with length bytes\r
- included so that they can be easily skip\r
-\r
- @param Header Standard string block header, where\r
- Header.BlockType = EFI_HII_SIBT_EXT1,\r
- EFI_HII_SIBT_EXT2 or EFI_HII_SIBT_EXT4.\r
- \r
- @param Length Size of the string block, in bytes.\r
-\r
-**/\r
-typedef struct _EFI_HII_SIBT_EXT4_BLOCK {\r
- EFI_HII_STRING_BLOCK Header;\r
- UINT8 BlockType2;\r
- UINT32 Length;\r
-} EFI_HII_SIBT_EXT4_BLOCK;\r
-\r
-/**\r
- \r
- Associates a font identifier FontId with a font name FontName,\r
- size FontSize and style FontStyle. This font identifier may be\r
- used with the string blocks. The font identifier 0 is the\r
- default font for those string blocks which do not specify a font\r
- identifier.\r
-\r
- @param Header Standard extended header, where\r
- Header.BlockType = EFI_HII_SIBT_FONT.\r
-\r
- @param FontId Font identifier, which must be unique within\r
- the font package.\r
-\r
- @param FontSize Character cell size, in pixels, of the font.\r
-\r
- @param FontStyle Font style.\r
-\r
- @param FontName Null-terminated font family name.\r
-\r
-**/\r
-typedef struct _EFI_HII_SIBT_FONT_BLOCK {\r
- EFI_HII_SIBT_EXT2_BLOCK Header;\r
- UINT8 FontId;\r
- UINT16 FontSize;\r
- EFI_HII_FONT_STYLE FontStyle;\r
- CHAR16 FontName[1];\r
-} EFI_HII_SIBT_FONT_BLOCK;\r
-\r
-/**\r
- \r
- Increments the current string identifier StringIdCurrent by the\r
- number specified.\r
-\r
- @param Header Standard string block header, where\r
- Header.BlockType = EFI_HII_SIBT_SKIP1.\r
- \r
- @param SkipCount The unsigned 8-bit value to add to\r
- StringIdCurrent.\r
-\r
-**/\r
-typedef struct _EFI_HII_SIBT_SKIP1_BLOCK {\r
- EFI_HII_STRING_BLOCK Header;\r
- UINT8 SkipCount;\r
-} EFI_HII_SIBT_SKIP1_BLOCK;\r
-\r
-/**\r
-\r
- Increments the current string identifier StringIdCurrent by\r
- the number specified.\r
-\r
- @param Header Standard string block header, where\r
- Header.BlockType = EFI_HII_SIBT_SKIP2.\r
-\r
- @param SkipCount The unsigned 16-bit value to add to\r
- StringIdCurrent.\r
-\r
-**/\r
-typedef struct _EFI_HII_SIBT_SKIP2_BLOCK {\r
- EFI_HII_STRING_BLOCK Header;\r
- UINT16 SkipCount;\r
-} EFI_HII_SIBT_SKIP2_BLOCK;\r
-\r
-/**\r
- \r
- This string block provides the SCSU-encoded text for the string\r
- in the default font with string identifier StringIdCurrent and\r
- increments StringIdCurrent by one.\r
-\r
- @param Header Standard header where Header.BlockType =\r
- EFI_HII_SIBT_STRING_SCSU.\r
-\r
- @param StringText The string text is a null-terminated\r
- string, which is assigned to the string\r
- identifier StringIdCurrent.\r
-\r
-**/\r
-typedef struct _EFI_HII_SIBT_STRING_SCSU_BLOCK {\r
- EFI_HII_STRING_BLOCK Header;\r
- UINT8 StringText[1];\r
-} EFI_HII_SIBT_STRING_SCSU_BLOCK;\r
-\r
-\r
-/**\r
-\r
- This string block provides the SCSU-encoded text for the string\r
- in the font specified by FontIdentifier with string identifier\r
- StringIdCurrent and increments StringIdCurrent by one.\r
-\r
- @param Header Standard string block header, where\r
- Header.BlockType = EFI_HII_SIBT_STRING_SCSU_FONT.\r
-\r
- @param FontIdentifier The identifier of the font to be used\r
- as the starting font for the entire\r
- string. The identifier must either be\r
- 0 for the default font or an\r
- identifier previously specified by an\r
- EFI_HII_SIBT_FONT block. Any string\r
- characters that deviates from this\r
- font family, size or style must\r
- provide an explicit control character.\r
-\r
- @param StringText The string text is a null-terminated\r
- encoded string, which is assigned to the\r
- string identifier StringIdCurrent.\r
-\r
-\r
-**/\r
-typedef struct _EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK {\r
- EFI_HII_STRING_BLOCK Header;\r
- UINT8 FontIdentifier;\r
- UINT8 StringText[1];\r
-} EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK;\r
-\r
-\r
-/**\r
- \r
- This string block provides the SCSU-encoded text for StringCount\r
- strings which have the default font and which have sequential\r
- string identifiers. The strings are assigned the identifiers,\r
- starting with StringIdCurrent and continuing through\r
- StringIdCurrent + StringCount ??C 1. StringIdCurrent is\r
- incremented by StringCount.\r
-\r
- @param Header Standard header where Header.BlockType =\r
- EFI_HII_SIBT_STRINGS_SCSU.\r
-\r
- @param StringCount Number of strings in StringText.\r
-\r
- @param StringText The strings, where each string is a\r
- null-terminated encoded string.\r
-\r
-**/\r
-typedef struct _EFI_HII_SIBT_STRINGS_SCSU_BLOCK {\r
- EFI_HII_STRING_BLOCK Header;\r
- UINT16 StringCount;\r
- UINT8 StringText[1];\r
-} EFI_HII_SIBT_STRINGS_SCSU_BLOCK;\r
-\r
-\r
-/**\r
- \r
- This string block provides the SCSU-encoded text for StringCount\r
- strings which have the font specified by FontIdentifier and\r
- which have sequential string identifiers. The strings are\r
- assigned the identifiers, starting with StringIdCurrent and\r
- continuing through StringIdCurrent + StringCount ??C 1.\r
- StringIdCurrent is incremented by StringCount.\r
-\r
- @param Header Standard header where Header.BlockType =\r
- EFI_HII_SIBT_STRINGS_SCSU_FONT.\r
-\r
- @param StringCount Number of strings in StringText.\r
-\r
- @param FontIdentifier The identifier of the font to be used\r
- as the starting font for the entire\r
- string. The identifier must either be\r
- 0 for the default font or an\r
- identifier previously specified by an\r
- EFI_HII_SIBT_FONT block. Any string\r
- characters that deviates from this\r
- font family, size or style must\r
- provide an explicit control character.\r
-\r
- @param StringText The strings, where each string is a\r
- null-terminated encoded string.\r
-\r
-**/\r
-typedef struct _EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK {\r
- EFI_HII_STRING_BLOCK Header;\r
- UINT16 StringCount;\r
- UINT8 FontIdentifier;\r
- UINT8 StringText[1];\r
-} EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK;\r
-\r
-\r
-/**\r
- \r
- This string block provides the UCS-2 encoded text for the string\r
- in the default font with string identifier StringIdCurrent and\r
- increments StringIdCurrent by one.\r
-\r
- @param Header Standard header where Header.BlockType =\r
- EFI_HII_SIBT_STRING_UCS2.\r
-\r
- @param StringText The string text is a null-terminated UCS-2\r
- string, which is assigned to the string\r
- identifier StringIdCurrent.\r
-\r
-**/\r
-typedef struct _EFI_HII_SIBT_STRING_UCS2_BLOCK {\r
- EFI_HII_STRING_BLOCK Header;\r
- CHAR16 StringText[1];\r
-} EFI_HII_SIBT_STRING_UCS2_BLOCK;\r
-\r
-\r
-/**\r
- \r
- This string block provides the UCS-2 encoded text for the string\r
- in the font specified by FontIdentifier with string identifier\r
- StringIdCurrent and increments StringIdCurrent by one\r
-\r
- @param Header Standard header where Header.BlockType =\r
- EFI_HII_SIBT_STRING_UCS2_FONT.\r
-\r
- @param FontIdentifier The identifier of the font to be used\r
- as the starting font for the entire\r
- string. The identifier must either be\r
- 0 for the default font or an\r
- identifier previously specified by an\r
- EFI_HII_SIBT_FONT block. Any string\r
- characters that deviates from this\r
- font family, size or style must\r
- provide an explicit control character.\r
-\r
- @param StringText The string text is a null-terminated UCS-2\r
- string, which is assigned to the string\r
- identifier StringIdCurrent.\r
-\r
-**/\r
-typedef struct _EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK {\r
- EFI_HII_STRING_BLOCK Header;\r
- UINT8 FontIdentifier;\r
- CHAR16 StringText[1];\r
-} EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK;\r
-\r
-\r
-/**\r
- \r
- This string block provides the UCS-2 encoded text for the\r
- strings in the default font with string identifiers\r
- StringIdCurrent to StringIdCurrent + StringCount - 1 and\r
- increments StringIdCurrent by StringCount.\r
-\r
- @param Header Standard header where Header.BlockType =\r
- EFI_HII_SIBT_STRINGS_UCS2.\r
-\r
- @param StringCount Number of strings in StringText.\r
-\r
- @param StringText The string text is a series of\r
- null-terminated UCS-2 strings, which are\r
- assigned to the string identifiers\r
- StringIdCurrent.to StringIdCurrent +\r
- StringCount - 1.\r
- \r
-**/\r
-typedef struct _EFI_HII_SIBT_STRINGS_UCS2_BLOCK {\r
- EFI_HII_STRING_BLOCK Header;\r
- UINT16 StringCount;\r
- CHAR16 StringText[1];\r
-} EFI_HII_SIBT_STRINGS_UCS2_BLOCK;\r
-\r
-\r
-/**\r
- \r
- The fixed header consists of a standard record header and the\r
- offsets of the image and palette information.\r
-\r
- @param Header Standard package header, where Header.Type =\r
- EFI_HII_PACKAGE_IMAGES. ImageInfoOffset\r
- Offset, relative to this header, of the image\r
- information. If this is zero, then there are\r
- no images in the package.\r
-\r
- @param PaletteInfoOffset Offset, relative to this header, of\r
- the palette information. If this is\r
- zero, then there are no palettes in\r
- the image package.\r
-\r
-**/\r
-typedef struct _EFI_HII_IMAGE_PACKAGE_HDR {\r
- EFI_HII_PACKAGE_HEADER Header;\r
- UINT32 ImageInfoOffset;\r
- UINT32 PaletteInfoOffset;\r
-} EFI_HII_IMAGE_PACKAGE_HDR;\r
-\r
-\r
-//\r
-// EFI_HII_IMAGE_BLOCK\r
-// \r
-typedef struct _EFI_HII_IMAGE_BLOCK {\r
- UINT8 BlockType;\r
- UINT8 BlockBody[1];\r
-} EFI_HII_IMAGE_BLOCK;\r
-\r
-//\r
-// EFI_HII_IMAGE_BLOCK.BlockType.\r
-// \r
-#define EFI_HII_IIBT_END 0x00\r
-#define EFI_HII_IIBT_IMAGE_1BIT 0x10\r
-#define EFI_HII_IIBT_IMAGE_1BIT_TRANS 0x11\r
-#define EFI_HII_IIBT_IMAGE_4BIT 0x12\r
-#define EFI_HII_IIBT_IMAGE_4BIT_TRANS 0x13\r
-#define EFI_HII_IIBT_IMAGE_8BIT 0x14\r
-#define EFI_HII_IIBT_IMAGE_8BIT_TRANS 0x15\r
-#define EFI_HII_IIBT_IMAGE_24BIT 0x16\r
-#define EFI_HII_IIBT_IMAGE_24BIT_TRANS 0x17\r
-#define EFI_HII_IIBT_IMAGE_JPEG 0x18\r
-#define EFI_HII_IIBT_DUPLICATE 0x20\r
-#define EFI_HII_IIBT_SKIP2 0x21\r
-#define EFI_HII_IIBT_SKIP1 0x22\r
-#define EFI_HII_IIBT_EXT1 0x30\r
-#define EFI_HII_IIBT_EXT2 0x31\r
-#define EFI_HII_IIBT_EXT4 0x32\r
-\r
-\r
-/**\r
- \r
- Any images with an image identifier greater than or equal to\r
- ImageIdCurrent are empty.\r
-\r
- @param Header Standard image block header, where\r
- Header.BlockType = EFI_HII_IIBT_END.\r
-\r
-**/\r
-typedef struct _EFI_HII_IIBT_END_BLOCK {\r
- EFI_HII_IMAGE_BLOCK Header;\r
-} EFI_HII_IIBT_END_BLOCK;\r
-\r
-\r
-/**\r
- \r
- Future extensions for image records which need a length-byte\r
- length use this prefix.\r
-\r
- @param Header Standard image block header, where\r
- Header.BlockType = EFI_HII_IIBT_EXT1,\r
- EFI_HII_IIBT_EXT2 or EFI_HII_IIBT_EXT4.\r
- \r
- @param Length Size of the image block, in bytes, including\r
- the image block header.\r
-\r
-**/\r
-typedef struct _EFI_HII_IIBT_EXT1_BLOCK {\r
- EFI_HII_IMAGE_BLOCK Header;\r
- UINT8 BlockType2;\r
- UINT8 Length;\r
-} EFI_HII_IIBT_EXT1_BLOCK;\r
-\r
-/**\r
- \r
- Future extensions for image records which need a length-byte\r
- length use this prefix.\r
-\r
- @param Header Standard image block header, where\r
- Header.BlockType = EFI_HII_IIBT_EXT1,\r
- EFI_HII_IIBT_EXT2 or EFI_HII_IIBT_EXT4.\r
- \r
- @param Length Size of the image block, in bytes, including\r
- the image block header.\r
-\r
-**/\r
-typedef struct _EFI_HII_IIBT_EXT2_BLOCK {\r
- EFI_HII_IMAGE_BLOCK Header;\r
- UINT8 BlockType2;\r
- UINT16 Length;\r
-} EFI_HII_IIBT_EXT2_BLOCK;\r
-\r
-/**\r
- \r
- Future extensions for image records which need a length-byte\r
- length use this prefix.\r
-\r
- @param Header Standard image block header, where\r
- Header.BlockType = EFI_HII_IIBT_EXT1,\r
- EFI_HII_IIBT_EXT2 or EFI_HII_IIBT_EXT4.\r
- \r
- @param Length Size of the image block, in bytes, including\r
- the image block header.\r
-\r
-**/\r
-typedef struct _EFI_HII_IIBT_EXT4_BLOCK {\r
- EFI_HII_IMAGE_BLOCK Header;\r
- UINT8 BlockType2;\r
- UINT32 Length;\r
-} EFI_HII_IIBT_EXT4_BL0CK;\r
-\r
-//\r
-// EFI_HII_IIBT_IMAGE_1BIT_BASE\r
-// \r
-typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BASE {\r
- UINT16 Width;\r
- UINT16 Height;\r
- // UINT8 Data[...];\r
-} EFI_HII_IIBT_IMAGE_1BIT_BASE;\r
-\r
-/**\r
-\r
- This record assigns the 1-bit-per-pixel bitmap data to the\r
- ImageIdCurrent identifier and increment ImageIdCurrent by one.\r
- The data in the EFI_HII_IMAGE_1BIT_TRANS structure is exactly\r
- the same as the EFI_HII_IMAGE_1BIT structure, the difference is\r
- how the data is treated. The bitmap pixel value 0 is the\r
- transparency value and will not be written to the\r
- screen. The bitmap pixel value 1 will be translated to the color\r
- specified by Palette.\r
-\r
- @param Header Standard image header, where Header.BlockType\r
- = EFI_HII_IIBT_IMAGE_1BIT_TRANS.\r
-\r
- @param PaletteIndex Index of the palette in the palette\r
- information.\r
-\r
- @param Bitmap The bitmap specifies a series of pixels, one\r
- bit per pixel, left-to-right, top-to-bottom,\r
- and is padded out to the nearest byte. The\r
- number of bytes per bitmap can be calculated\r
- as: ((Width + 7)/8) * Height.\r
-\r
-**/\r
-typedef struct _EFI_HII_IBIT_IMAGE_1BIT_BLOCK {\r
- EFI_HII_IMAGE_BLOCK Header;\r
- UINT8 PaletteIndex;\r
- EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap;\r
-} EFI_HII_IIBT_IMAGE_1BIT_BLOCK;\r
-\r
-typedef EFI_HII_IIBT_IMAGE_1BIT_BLOCK EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK;\r
-\r
-\r
-//\r
-// EFI_HII_RGB_PIXEL\r
-// \r
-typedef struct _EFI_HII_RGB_PIXEL {\r
- UINT8 b;\r
- UINT8 g;\r
- UINT8 r;\r
-} EFI_HII_RGB_PIXEL;\r
-\r
-//\r
-// FI_HII_IIBT_IMAGE_24BIT_BASE\r
-// \r
-typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BASE {\r
- UINT16 Width;\r
- UINT16 Height;\r
- // EFI_HII_RGB_PIXEL Bitmap[...];\r
-} EFI_HII_IIBT_IMAGE_24BIT_BASE;\r
-\r
-/**\r
-\r
- This record assigns the 24-bit-per-pixel bitmap data to the \r
- ImageIdCurrent identifier and increment ImageIdCurrent by one. \r
- The image's upper left hand corner pixel is composed of the\r
- first three bitmap bytes. The first byte is the pixel????s blue \r
- component value, the next byte is the pixel????s green component \r
- value, and the third byte is the pixel's red component value\r
- (B,G,R). Each color component value can vary from 0x00 (color \r
- off) to 0xFF (color full on), allowing 16.8 millions colors that \r
- can be specified.\r
-\r
- @param Header Standard image header, where Header.BlockType\r
- = EFI_HII_IIBT_IMAGE_24BIT. Bitmap The bitmap\r
- specifies a series of pixels, 24 bits per\r
- pixel, left-to-right, top-to-bottom. The\r
- number of bytes per bitmap can be calculated\r
- as: (Width * 3) * Height.\r
-\r
- @param Type See EFI_HII_RGB_PIXEL definition.\r
-\r
-**/\r
-typedef struct {\r
- EFI_HII_IMAGE_BLOCK Header;\r
- EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap;\r
-} EFI_HII_IIBT_IMAGE_24BIT_BLOCK;\r
-\r
-typedef EFI_HII_IIBT_IMAGE_24BIT_BLOCK EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK;\r
-\r
-\r
-\r
-//\r
-// EFI_HII_IIBT_IMAGE_4BIT_BASE\r
-// \r
-typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BASE {\r
- UINT16 Width;\r
- UINT16 Height;\r
- // UINT8 Data[...];\r
-} EFI_HII_IIBT_IMAGE_4BIT_BASE;\r
-\r
-/**\r
- \r
- This record assigns the 4-bit-per-pixel bitmap data to the\r
- ImageIdCurrent identifier using the specified palette and\r
- increment ImageIdCurrent by one. The image????s upper left hand\r
- corner pixel is the most significant nibble of the first bitmap\r
- byte.\r
-\r
- @param Header Standard image header, where Header.BlockType\r
- = EFI_HII_IIBT_IMAGE_4BIT.\r
-\r
- @param PaletteIndex Index of the palette in the palette\r
- information.\r
-\r
- @param Bitmap The bitmap specifies a series of pixels, four\r
- bits per pixel, left-to-right, top-to-bottom,\r
- and is padded out to the nearest byte. The\r
- number of bytes per bitmap can be calculated\r
- as: ((Width + 1)/2) Height.\r
-\r
-**/\r
-typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BLOCK {\r
- EFI_HII_IMAGE_BLOCK Header;\r
- UINT8 PaletteIndex;\r
- EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap;\r
-} EFI_HII_IIBT_IMAGE_4BIT_BLOCK;\r
-\r
-typedef EFI_HII_IIBT_IMAGE_4BIT_BLOCK EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK;\r
-\r
-\r
-\r
-//\r
-// EFI_HII_IIBT_IMAGE_8BIT_BASE \r
-// \r
-typedef struct _EFI_HII_IIBT_IMAGE_8BIT_BASE {\r
- UINT16 Width;\r
- UINT16 Height;\r
- // UINT8 Data[...];\r
-} EFI_HII_IIBT_IMAGE_8BIT_BASE;\r
-\r
-/**\r
- \r
- This record assigns the 8-bit-per-pixel bitmap data to the\r
- ImageIdCurrent identifier using the specified palette and\r
- increment ImageIdCurrent by one. The image????s upper left hand\r
- corner pixel is the first bitmap byte.\r
-\r
- @param Header Standard image header, where Header.BlockType\r
- = EFI_HII_IIBT_IMAGE_8BIT.\r
-\r
- @param PaletteIndex Index of the palette in the palette\r
- information.\r
-\r
- @param Bitmap The bitmap specifies a series of pixels, eight\r
- bits per pixel, left-to-right, top-to-bottom.\r
- The number of bytes per bitmap can be\r
- calculated as: Width * Height.\r
-\r
-**/\r
-typedef struct _EFI_HII_IIBT_IMAGE_8BIT_PALETTE {\r
- EFI_HII_IMAGE_BLOCK Header;\r
- UINT8 PaletteIndex;\r
- EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap;\r
-} EFI_HII_IIBT_IMAGE_8BIT_PALETTE;\r
-\r
-typedef EFI_HII_IIBT_IMAGE_8BIT_PALETTE EFI_HII_IIBT_IMAGE_8BIT_TRANS_BLOCK;\r
-\r
-\r
-/**\r
- \r
- Indicates that the image with image ID ImageValueCurrent has the\r
- same image as a previously defined image ID and increments\r
- ImageValueCurrent by one\r
-\r
- @param Header Standard image header, where Header.BlockType\r
- = EFI_HII_IIBT_DUPLICATE.\r
-\r
- @param ImageId The previously defined image ID with the exact\r
- same image.\r
-\r
-\r
-**/\r
-typedef struct _EFI_HII_IIBT_DUPLICATE_BLOCK {\r
- EFI_HII_IMAGE_BLOCK Header;\r
- EFI_IMAGE_ID ImageId;\r
-} EFI_HII_IIBT_DUPLICATE_BLOCK;\r
-\r
-\r
-/**\r
- \r
- This record assigns the JPEG image data to the ImageIdCurrent\r
- identifier and increment ImageIdCurrent by one. The JPEG decoder\r
- is only required to cover the basic JPEG encoding types, which\r
- are produced by standard available paint packages (for example:\r
- MSPaint under Windows from Microsoft). This would include JPEG\r
- encoding of high (1:1:1) and medium (4:1:1) quality with only\r
- three components (R,G,B) ??C no support for the special gray\r
- component encoding.\r
-\r
- @param Header Standard image header, where Header.BlockType\r
- = EFI_HII_IIBT_IMAGE_JPEG.\r
- \r
- @param Size Specifies the size of the JPEG encoded data.\r
- \r
- @param Data JPEG encoded data with ????JFIF???? signature at\r
- offset 6 in the data block. The JPEG encoded\r
- data, specifies type of encoding and final size\r
- of true-color image.\r
-\r
-**/\r
-typedef struct _EFI_HII_IIBT_JPEG {\r
- EFI_HII_IMAGE_BLOCK Header;\r
- UINT32 Size;\r
- //UINT8 Data[ ¡ ];\r
-} EFI_HII_IIBT_JPEG;\r
-\r
-\r
-/**\r
- \r
- Increments the current image ID ImageIdCurrent by the number\r
- specified.\r
- \r
- @param Header Standard image header, where Header.BlockType\r
- = EFI_HII_IIBT_SKIP1.\r
- \r
- @param SkipCount The unsigned 8-bit value to add to\r
- ImageIdCurrent.\r
-\r
-**/\r
-typedef struct _EFI_HII_IIBT_SKIP1_BLOCK {\r
- EFI_HII_IMAGE_BLOCK Header;\r
- UINT8 SkipCount;\r
-} EFI_HII_IIBT_SKIP1_BLOCK;\r
-\r
-/**\r
- \r
- Increments the current image ID ImageIdCurrent by the number\r
- specified.\r
- \r
- @param Header Standard image header, where Header.BlockType\r
- = EFI_HII_IIBT_SKIP2.\r
- \r
- @param SkipCount The unsigned 16-bit value to add to\r
- ImageIdCurrent.\r
-\r
-**/\r
-typedef struct _EFI_HII_IIBT_SKIP2_BLOCK {\r
- EFI_HII_IMAGE_BLOCK Header;\r
- UINT16 SkipCount;\r
-} EFI_HII_IIBT_SKIP2_BLOCK;\r
-\r
-\r
-/**\r
- \r
- This fixed header is followed by zero or more variable-length\r
- palette information records. The structures are assigned a\r
- number 1 to n.\r
-\r
- @param PaletteCount Number of palettes.\r
-\r
-**/\r
-typedef struct _EFI_HII_IMAGE_PALETTE_INFO_HEADER {\r
- UINT16 PaletteCount;\r
-} EFI_HII_IMAGE_PALETTE_INFO_HEADER;\r
-\r
-/**\r
- \r
- Each palette information record is an array of 24-bit color\r
- structures. The first entry (PaletteValue[0]) corresponds to\r
- color 0 in the source image; the second entry (PaletteValue[1])\r
- corresponds to color 1, etc. Each palette entry is a three byte\r
- entry, with the first byte equal to the blue component of the\r
- color, followed by green, and finally red (B,G,R). Each color\r
- component value can vary from 0x00 (color off) to 0xFF (color\r
- full on), allowing 16.8 millions colors that can be specified.\r
-\r
- @param PaletteSize Size of the palette information.\r
- \r
- @param PaletteValue Array of color values.\r
- \r
-**/\r
-typedef struct _EFI_HII_IMAGE_PALETTE_INFO {\r
- UINT16 PaletteSize;\r
- // EFI_HII_RGB_PIXEL PaletteValue[...];\r
-} EFI_HII_IMAGE_PALETTE_INFO;\r
-\r
-\r
-\r
-//\r
-// EFI_HII_DATABASE_NOTIFY_TYPE\r
-// \r
+///\r
+/// EFI_HII_DATABASE_NOTIFY_TYPE.\r
+/// \r
typedef UINTN EFI_HII_DATABASE_NOTIFY_TYPE;\r
+\r
#define EFI_HII_DATABASE_NOTIFY_NEW_PACK 0x00000001\r
#define EFI_HII_DATABASE_NOTIFY_REMOVE_PACK 0x00000002\r
#define EFI_HII_DATABASE_NOTIFY_EXPORT_PACK 0x00000004\r
field of EFI_HII_PACKAGE_GUID_HEADER.\r
Otherwise, it must be NULL.\r
\r
- @param Package Points to the package referred to by the\r
- notification Handle The handle of the package\r
- list which contains the specified package.\r
+ @param Package Points to the package referred to by the notification. \r
+ \r
+ @param Handle The handle of the package\r
+ list which contains the specified package.\r
\r
@param NotifyType The type of change concerning the\r
database. See\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_HII_DATABASE_NOTIFY) (\r
- IN CONST UINT8 PackageType,\r
+(EFIAPI *EFI_HII_DATABASE_NOTIFY)(\r
+ IN UINT8 PackageType,\r
IN CONST EFI_GUID *PackageGuid,\r
IN CONST EFI_HII_PACKAGE_HEADER *Package,\r
- IN CONST EFI_HII_HANDLE Handle,\r
- IN CONST EFI_HII_DATABASE_NOTIFY_TYPE NotifyType\r
+ IN EFI_HII_HANDLE Handle,\r
+ IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType\r
);\r
\r
/**\r
be called. For each call to NewPackageList(), there should be a\r
corresponding call to\r
EFI_HII_DATABASE_PROTOCOL.RemovePackageList().\r
+ \r
+ @param This A pointer to the EFI_HII_DATABASE_PROTOCOL instance.\r
\r
- @param This A pointer to the EFI_HII_DATABASE_PROTOCOL\r
- instance.\r
-\r
- @param PackageList A pointer to an\r
- EFI_HII_PACKAGE_LIST_HEADER structure.\r
+ @param PackageList A pointer to an EFI_HII_PACKAGE_LIST_HEADER structure.\r
\r
- @param DriverHandle Associate the package list with this EFI\r
- handle Handle A pointer to the\r
- EFI_HII_HANDLE instance.\r
+ @param DriverHandle Associate the package list with this EFI handle.\r
+ If a NULL is specified, this data will not be associate\r
+ with any drivers and cannot have a callback induced.\r
+ \r
+ @param Handle A pointer to the EFI_HII_HANDLE instance.\r
\r
- @retval EFI_SUCCESS The package list associated with the\r
- Handle was added to the HII database.\r
+ @retval EFI_SUCCESS The package list associated with the\r
+ Handle was added to the HII database.\r
\r
@retval EFI_OUT_OF_RESOURCES Unable to allocate necessary\r
resources for the new database\r
contents.\r
\r
- @retval EFI_INVALID_PARAMETER PackageList is NULL or Handle\r
- is NULL.\r
+ @retval EFI_INVALID_PARAMETER PackageList is NULL, or Handle is NULL.\r
\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_HII_NEW_PACK) (\r
+(EFIAPI *EFI_HII_DATABASE_NEW_PACK)(\r
IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
IN CONST EFI_HII_PACKAGE_LIST_HEADER *PackageList,\r
- IN CONST EFI_HANDLE DriverHandle,\r
- OUT EFI_HII_HANDLE *Handle\r
+ IN EFI_HANDLE DriverHandle, OPTIONAL\r
+ OUT EFI_HII_HANDLE *Handle\r
);\r
\r
\r
call to EFI_HII_DATABASE_PROTOCOL.NewPackageList(), there should\r
be a corresponding call to RemovePackageList.\r
\r
- @param This A pointer to the EFI_HII_DATABASE_PROTOCOL\r
- instance.\r
+ @param This A pointer to the EFI_HII_DATABASE_PROTOCOL instance.\r
\r
- @param Handle The handle that was registered to the data\r
- that is requested for removal.\r
+ @param Handle The handle that was registered to the data\r
+ that is requested for removal.\r
\r
- @retval EFI_SUCCESS The data associated with the Handle was\r
- removed from the HII database.\r
- \r
- @retval EFI_INVALID_PARAMETER The Handle was not valid.\r
+ @retval EFI_SUCCESS The data associated with the Handle was\r
+ removed from the HII database.\r
+ @retval EFI_NOT_FOUND The specified Handle is not in database.\r
\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_HII_REMOVE_PACK) (\r
+(EFIAPI *EFI_HII_DATABASE_REMOVE_PACK)(\r
IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
- IN CONST EFI_HII_HANDLE Handle\r
+ IN EFI_HII_HANDLE Handle\r
);\r
\r
\r
EFI_HII_PACKAGE_TYPE_GUID, the Guid field, as defined in\r
EFI_HII_PACKAGE_GUID_HEADER. Iterate through the packages within\r
the existing package list in the HII database specified by\r
- Handle. If a package??s type matches one of the types collected\r
+ Handle. If a package's type matches one of the collected types collected\r
in step 1, then perform the following steps:\r
- Call any functions registered with the notification type\r
REMOVE_PACK.\r
- Call any functions registered with the notification type\r
ADD_PACK.\r
\r
- @param This A pointer to the EFI_HII_DATABASE_PROTOCOL\r
- instance.\r
+ @param This A pointer to the EFI_HII_DATABASE_PROTOCOL instance.\r
\r
- @param Handle The handle that was registered to the data\r
- that is requested for removal.\r
+ @param Handle The handle that was registered to the data\r
+ that is requested for removal.\r
\r
@param PackageList A pointer to an EFI_HII_PACKAGE_LIST\r
package.\r
\r
- @retval EFI_SUCCESS The HII database was successfully\r
- updated.\r
+ @retval EFI_SUCCESS The HII database was successfully updated.\r
\r
- @retval EFI_OUT_OF_RESOURCES Unable to allocate enough memory\r
- for the updated database.\r
+ @retval EFI_OUT_OF_RESOURCES Unable to allocate enough memory\r
+ for the updated database.\r
\r
- @retval EFI_INVALID_PARAMETER The Handle was not valid.\r
+ @retval EFI_INVALID_PARAMETER PackageList was NULL.\r
+ @retval EFI_NOT_FOUND The specified Handle is not in database.\r
\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_HII_UPDATE_PACK) (\r
+(EFIAPI *EFI_HII_DATABASE_UPDATE_PACK)(\r
IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
- IN CONST EFI_HII_HANDLE Handle,\r
+ IN EFI_HII_HANDLE Handle,\r
IN CONST EFI_HII_PACKAGE_LIST_HEADER *PackageList\r
);\r
\r
pseudo-type EFI_HII_PACKAGE_TYPE_ALL will cause all package \r
handles to be listed.\r
\r
- @param This A pointer to the EFI_HII_DATABASE_PROTOCOL\r
- instance.\r
+ @param This A pointer to the EFI_HII_DATABASE_PROTOCOL instance.\r
\r
- @param PackageType Specifies the package type of the packages\r
- to list or EFI_HII_PACKAGE_TYPE_ALL for\r
- all packages to be listed.\r
+ @param PackageType Specifies the package type of the packages\r
+ to list or EFI_HII_PACKAGE_TYPE_ALL for\r
+ all packages to be listed.\r
\r
- @param PackageGuid If PackageType is\r
- EFI_HII_PACKAGE_TYPE_GUID, then this is\r
- the pointer to the GUID which must match\r
- the Guid field of\r
- EFI_HII_PACKAGE_GUID_HEADER. Otherwise, it\r
- must be NULL.\r
+ @param PackageGuid If PackageType is\r
+ EFI_HII_PACKAGE_TYPE_GUID, then this is\r
+ the pointer to the GUID which must match\r
+ the Guid field of\r
+ EFI_HII_PACKAGE_GUID_HEADER. Otherwise, it\r
+ must be NULL.\r
\r
@param HandleBufferLength On input, a pointer to the length\r
of the handle buffer. On output,\r
the length of the handle buffer\r
- that is required for the handles\r
- found.\r
-\r
- @param Handle An array of EFI_HII_HANDLE instances returned.\r
+ that is required for the handles found.\r
\r
+ @param Handle An array of EFI_HII_HANDLE instances returned.\r
\r
- @retval EFI_SUCCESS Handle was updated successfully.\r
-\r
+ @retval EFI_SUCCESS The matching handles are outputed successfully.\r
+ HandleBufferLength is updated with the actual length.\r
@retval EFI_BUFFER_TOO_SMALL The HandleBufferLength parameter\r
indicates that Handle is too\r
small to support the number of\r
handles. HandleBufferLength is\r
updated with a value that will\r
enable the data to fit.\r
-\r
-\r
+ @retval EFI_NOT_FOUND No matching handle could be found in database.\r
+ @retval EFI_INVALID_PARAMETER Handle or HandleBufferLength was NULL.\r
+ @retval EFI_INVALID_PARAMETER PackageType is not a EFI_HII_PACKAGE_TYPE_GUID but\r
+ PackageGuid is not NULL, PackageType is a EFI_HII_\r
+ PACKAGE_TYPE_GUID but PackageGuid is NULL.\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_HII_LIST_PACKS) (\r
+(EFIAPI *EFI_HII_DATABASE_LIST_PACKS)(\r
IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
- IN CONST UINT8 PackageType,\r
+ IN UINT8 PackageType,\r
IN CONST EFI_GUID *PackageGuid,\r
IN OUT UINTN *HandleBufferLength,\r
OUT EFI_HII_HANDLE *Handle\r
);\r
\r
-\r
-\r
-\r
-\r
-\r
/**\r
\r
This function will export one or all package lists in the\r
EFI_OUT_OF_RESOURCES will be returned and the actual package\r
size will be returned in BufferSize.\r
\r
- @param This A pointer to the EFI_HII_DATABASE_PROTOCOL\r
- instance.\r
+ @param This A pointer to the EFI_HII_DATABASE_PROTOCOL instance.\r
\r
- @param Handle An EFI_HII_HANDLE that corresponds to the\r
- desired package list in the HII database to\r
- export or NULL to indicate all package lists\r
- should be exported. \r
+\r
+ @param Handle An EFI_HII_HANDLE that corresponds to the\r
+ desired package list in the HII database to\r
+ export or NULL to indicate all package lists\r
+ should be exported. \r
\r
@param BufferSize On input, a pointer to the length of the\r
buffer. On output, the length of the\r
buffer that is required for the exported\r
data.\r
\r
- @param Buffer A pointer to a buffer that will contain the\r
- results of the export function.\r
+ @param Buffer A pointer to a buffer that will contain the\r
+ results of the export function.\r
\r
\r
- @retval EFI_SUCCESS Package exported.\r
+ @retval EFI_SUCCESS Package exported.\r
\r
- @retval EFI_OUT_OF_RESOURCES BufferSize is too small to hold\r
- the package.\r
+ @retval EFI_OUT_OF_RESOURCES BufferSize is too small to hold the package.\r
\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_HII_EXPORT_PACKS) (\r
- IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
- IN CONST EFI_HII_HANDLE Handle,\r
- IN OUT UINTN *BufferSize,\r
- OUT EFI_HII_PACKAGE_HEADER *Buffer\r
+(EFIAPI *EFI_HII_DATABASE_EXPORT_PACKS)(\r
+ IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
+ IN EFI_HII_HANDLE Handle,\r
+ IN OUT UINTN *BufferSize,\r
+ OUT EFI_HII_PACKAGE_LIST_HEADER *Buffer\r
);\r
\r
\r
exiting.\r
\r
\r
- @param This A pointer to the EFI_HII_DATABASE_PROTOCOL\r
- instance.\r
+ @param This A pointer to the EFI_HII_DATABASE_PROTOCOL instance.\r
\r
- @param PackageType The package type. See\r
- EFI_HII_PACKAGE_TYPE_x in EFI_HII_PACKAGE_HEADER. \r
+ @param PackageType The package type. See\r
+ EFI_HII_PACKAGE_TYPE_x in EFI_HII_PACKAGE_HEADER. \r
\r
- @param PackageGuid If PackageType is\r
- EFI_HII_PACKAGE_TYPE_GUID, then this is\r
- the pointer to the GUID which must match\r
- the Guid field of\r
- EFI_HII_PACKAGE_GUID_HEADER. Otherwise, it\r
- must be NULL.\r
+ @param PackageGuid If PackageType is\r
+ EFI_HII_PACKAGE_TYPE_GUID, then this is\r
+ the pointer to the GUID which must match\r
+ the Guid field of\r
+ EFI_HII_PACKAGE_GUID_HEADER. Otherwise, it\r
+ must be NULL.\r
\r
@param PackageNotifyFn Points to the function to be called\r
when the event specified by\r
NotificationType occurs. See\r
EFI_HII_DATABASE_NOTIFY.\r
\r
- @param NotifyType Describes the types of notification which\r
- this function will be receiving. See\r
- EFI_HII_DATABASE_NOTIFY_TYPE for more a\r
- list of types.\r
+ @param NotifyType Describes the types of notification which\r
+ this function will be receiving. See\r
+ EFI_HII_DATABASE_NOTIFY_TYPE for a\r
+ list of types.\r
\r
- @param NotifyHandle Points to the unique handle assigned to\r
- the registered notification. Can be used\r
- in\r
- EFI_HII_DATABASE_PROTOCOL.UnregisterPack\r
- to stop notifications.\r
+ @param NotifyHandle Points to the unique handle assigned to\r
+ the registered notification. Can be used\r
+ in EFI_HII_DATABASE_PROTOCOL.UnregisterPack\r
+ to stop notifications.\r
\r
\r
- @retval EFI_SUCCESS Notification registered successfully.\r
+ @retval EFI_SUCCESS Notification registered successfully.\r
\r
@retval EFI_OUT_OF_RESOURCES Unable to allocate necessary\r
data structures.\r
\r
- @retval EFI_INVALID_PARAMETER PackageGuid is not NULL when\r
- PackageType is not\r
- EFI_HII_PACKAGE_TYPE_GUID.\r
+ @retval EFI_INVALID_PARAMETER PackageGuid is not NULL when\r
+ PackageType is not\r
+ EFI_HII_PACKAGE_TYPE_GUID.\r
\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_HII_REGISTER_NOTIFY) (\r
+(EFIAPI *EFI_HII_DATABASE_REGISTER_NOTIFY)(\r
IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
- IN CONST UINT8 PackageType,\r
+ IN UINT8 PackageType,\r
IN CONST EFI_GUID *PackageGuid,\r
- IN CONST EFI_HII_DATABASE_NOTIFY PackageNotifyFn,\r
- IN CONST EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,\r
+ IN EFI_HII_DATABASE_NOTIFY PackageNotifyFn,\r
+ IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,\r
OUT EFI_HANDLE *NotifyHandle\r
);\r
\r
\r
Removes the specified HII database package-related notification.\r
\r
- @param This A pointer to the EFI_HII_DATABASE_PROTOCOL\r
- instance.\r
- \r
+ @param This A pointer to the EFI_HII_DATABASE_PROTOCOL instance.\r
+\r
@param NotificationHandle The handle of the notification\r
function being unregistered.\r
\r
- @retval EFI_SUCCESS Unregister the notification\r
- Successsfully\r
+ @retval EFI_SUCCESS Successsfully unregistered the notification. \r
+ \r
+ @retval EFI_NOT_FOUND The incoming notification handle does not exist \r
+ in the current hii database.\r
\r
- @retval EFI_INVALID_PARAMETER The Handle is invalid.\r
-\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_HII_UNREGISTER_NOTIFY) (\r
+(EFIAPI *EFI_HII_DATABASE_UNREGISTER_NOTIFY)(\r
IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
- IN CONST EFI_HANDLE NotificationHandle\r
+ IN EFI_HANDLE NotificationHandle\r
);\r
\r
\r
-/**\r
- \r
- @param Header The general pack header which defines both the\r
- type of pack and the length of the entire\r
- pack.\r
-\r
- @param LayoutCount The number of keyboard layouts contained\r
- in the entire keyboard pack.\r
-\r
- @param Layout An array of LayoutCount number of keyboard\r
- layouts.\r
-\r
-**/\r
-typedef struct {\r
- EFI_HII_PACKAGE_HEADER Header;\r
- UINT16 LayoutCount;\r
- // EFI_HII_KEYBOARD_LAYOUT Layout[...];\r
-} EFI_HII_KEYBOARD_PACK;\r
-\r
-/**\r
- \r
- @param LayoutLength The length of the current keyboard\r
- layout.\r
-\r
- @param Guid The unique ID associated with this keyboard\r
- layout.\r
-\r
- @param LayoutDescriptorString An offset location (0 is the\r
- beginning of the\r
- EFI_KEYBOARD_LAYOUT instance)\r
- of the string which describes\r
- this keyboard layout. The data\r
- that is being referenced is in\r
- EFI_DESCRIPTION_STRING_BUNDLE\r
- format.\r
-\r
- @param DescriptorCount The number of Descriptor entries in\r
- this layout.\r
-\r
- @param Descriptors An array of key descriptors.\r
-\r
-**/\r
-typedef struct {\r
- UINT16 LayoutLength;\r
- EFI_GUID Guid;\r
- RELOFST LayoutDescriptorString;\r
- UINT8 DescriptorCount;\r
- // EFI_KEY_DESCRIPTOR Descriptors[...];\r
-} EFI_HII_KEYBOARD_LAYOUT;\r
-\r
-\r
-/**\r
- \r
- @param Language The language to associate with\r
- DescriptionString.\r
-\r
- @param Space A space (U-0x0020) character to force as a\r
- separator between the Language field and the\r
- formal description string.\r
-\r
- @param DescriptionString A null-terminated description\r
- string.\r
-\r
-**/\r
-typedef struct {\r
- CHAR16 Language[3];\r
- CHAR16 Space;\r
- CHAR16 DescriptionString[1];\r
-} EFI_DESCRIPTION_STRING;\r
-\r
-/**\r
- \r
- @param DescriptionCount The number of description strings.\r
-\r
- @param DescriptionString An array of language-specific\r
- description strings.\r
-\r
-**/\r
-typedef struct {\r
- UINT16 DescriptionCount;\r
- // EFI_DESCRIPTION_STRING DescriptionString[];\r
-} EFI_DESCRIPTION_STRING_BUNDLE;\r
-\r
-/**\r
-\r
- See the figure below for which key corresponds to the values in\r
- the enumeration above. For example, EfiKeyLCtrl corresponds to\r
- the left control key in the lower-left corner of the keyboard,\r
- EfiKeyFour corresponds to the 4 key on the numeric keypad, and\r
- EfiKeySLck corresponds to the Scroll Lock key in the upper-right\r
- corner of the keyboard.\r
-\r
-**/\r
-typedef enum {\r
- EfiKeyLCtrl, EfiKeyA0, EfiKeyLAlt, EfiKeySpaceBar,\r
- EfiKeyA2, EfiKeyA3, EfiKeyA4, EfiKeyRCtrl, EfiKeyLeftArrow,\r
- EfiKeyDownArrow, EfiKeyRightArrow, EfiKeyZero,\r
- EfiKeyPeriod, EfiKeyEnter, EfiKeyLShift, EfiKeyB0,\r
- EfiKeyB1, EfiKeyB2, EfiKeyB3, EfiKeyB4, EfiKeyB5, EfiKeyB6,\r
- EfiKeyB7, EfiKeyB8, EfiKeyB9, EfiKeyB10, EfiKeyRshift,\r
- EfiKeyUpArrow, EfiKeyOne, EfiKeyTwo, EfiKeyThree,\r
- EfiKeyCapsLock, EfiKeyC1, EfiKeyC2, EfiKeyC3, EfiKeyC4,\r
- EfiKeyC5, EfiKeyC6, EfiKeyC7, EfiKeyC8, EfiKeyC9,\r
- EfiKeyC10, EfiKeyC11, EfiKeyC12, EfiKeyFour, EfiKeyFive,\r
- EfiKeySix, EfiKeyPlus, EfiKeyTab, EfiKeyD1, EfiKeyD2,\r
- EfiKeyD3, EfiKeyD4, EfiKeyD5, EfiKeyD6, EfiKeyD7, EfiKeyD8,\r
- EfiKeyD9, EfiKeyD10, EfiKeyD11, EfiKeyD12, EfiKeyD13,\r
- EfiKeyDel, EfiKeyEnd, EfiKeyPgDn, EfiKeySeven, EfiKeyEight,\r
- EfiKeyNine, EfiKeyE0, EfiKeyE1, EfiKeyE2, EfiKeyE3,\r
- EfiKeyE4, EfiKeyE5, EfiKeyE6, EfiKeyE7, EfiKeyE8, EfiKeyE9,\r
- EfiKeyE10, EfiKeyE11, EfiKeyE12, EfiKeyBackSpace,\r
- EfiKeyIns, EfiKeyHome, EfiKeyPgUp, EfiKeyNLck, EfiKeySlash,\r
- EfiKeyAsterisk, EfiKeyMinus, EfiKeyEsc, EfiKeyF1, EfiKeyF2,\r
- EfiKeyF3, EfiKeyF4, EfiKeyF5, EfiKeyF6, EfiKeyF7, EfiKeyF8,\r
- EfiKeyF9, EfiKeyF10, EfiKeyF11, EfiKeyF12, EfiKeyPrint,\r
- EfiKeySLck, EfiKeyPause\r
-} EFI_KEY;\r
-\r
-/**\r
- \r
- @param Key Used to describe a physical key on a keyboard.\r
-\r
- @param Unicode Unicode value for the Key.\r
-\r
- @param ShiftedUnicode Unicode value for the key with the\r
- shift key being held down. \r
-\r
- @param AltGrUnicode Unicode value for the key with the\r
- Alt-GR being held down.\r
-\r
- @param ShiftedAltGrUnicode Unicode value for the key with the\r
- Alt-GR and shift keys being held down.\r
-\r
- @param Modifier Modifier keys are defined to allow for\r
- special functionality that is not\r
- necessarily accomplished by a printable\r
- character. Many of these modifier keys are\r
- flags to toggle certain state bits on and\r
- off inside of a keyboard driver.\r
- \r
-**/\r
-typedef struct {\r
- EFI_KEY Key;\r
- CHAR16 Unicode;\r
- CHAR16 ShiftedUnicode;\r
- CHAR16 AltGrUnicode;\r
- CHAR16 ShiftedAltGrUnicode;\r
- UINT16 Modifier;\r
-} EFI_KEY_DESCRIPTOR;\r
-\r
-\r
-//\r
-// Modifier values\r
-//\r
-#define EFI_NULL_MODIFIER 0x0000\r
-#define EFI_LEFT_CONTROL_MODIFIER 0x0001\r
-#define EFI_RIGHT_CONTROL_MODIFIER 0x0002\r
-#define EFI_LEFT_ALT_MODIFIER 0x0003\r
-#define EFI_RIGHT_ALT_MODIFIER 0x0004\r
-#define EFI_ALT_GR_MODIFIER 0x0005\r
-#define EFI_INSERT_MODIFIER 0x0006\r
-#define EFI_DELETE_MODIFIER 0x0007\r
-#define EFI_PAGE_DOWN_MODIFIER 0x0008\r
-#define EFI_PAGE_UP_MODIFIER 0x0009\r
-#define EFI_HOME_MODIFIER 0x000A\r
-#define EFI_END_MODIFIER 0x000B\r
-#define EFI_LEFT_SHIFT_MODIFIER 0x000C\r
-#define EFI_RIGHT_SHIFT_MODIFIER 0x000D\r
-#define EFI_CAPS_LOCK_MODIFIER 0x000E\r
-#define EFI_NUM_LOCK _MODIFIER 0x000F\r
-#define EFI_LEFT_ARROW_MODIFIER 0x0010\r
-#define EFI_RIGHT_ARROW_MODIFIER 0x0011\r
-#define EFI_DOWN_ARROW_MODIFIER 0x0012\r
-#define EFI_UP_ARROW_MODIFIER 0X0013\r
-#define EFI_NS_KEY_MODIFIER 0x0014\r
-#define EFI_NS_KEY_DEPENDENCY_MODIFIER 0x0015\r
-#define EFI_FUNCTION_KEY_ONE_MODIFIER 0x0016\r
-#define EFI_FUNCTION_KEY_TWO_MODIFIER 0x0017\r
-#define EFI_FUNCTION_KEY_THREE_MODIFIER 0x0018\r
-#define EFI_FUNCTION_KEY_FOUR_MODIFIER 0x0019\r
-#define EFI_FUNCTION_KEY_FIVE_MODIFIER 0x001A\r
-#define EFI_FUNCTION_KEY_SIX_MODIFIER 0x001B\r
-#define EFI_FUNCTION_KEY_SEVEN_MODIFIER 0x001C\r
-#define EFI_FUNCTION_KEY_EIGHT_MODIFIER 0x001D\r
-#define EFI_FUNCTION_KEY_NINE_MODIFIER 0x001E\r
-#define EFI_FUNCTION_KEY_TEN_MODIFIER 0x001F\r
-#define EFI_FUNCTION_KEY_ELEVEN_MODIFIER 0x0020\r
-#define EFI_FUNCTION_KEY_TWELVE_MODIFIER 0x0021\r
-//\r
-// Keys that have multiple control functions based on modifier\r
-// settings are handled in the keyboard driver implementation.\r
-// For instance PRINT_KEY might have a modifier held down and\r
-// is still a nonprinting character, but might have an alternate\r
-// control function like SYSREQUEST\r
-//\r
-#define EFI_PRINT_MODIFIER 0x0022\r
-#define EFI_SYS_REQUEST_MODIFIER 0x0023\r
-#define EFI_SCROLL_LOCK_MODIFIER 0x0024\r
-#define EFI_PAUSE_MODIFIER 0x0025\r
-#define EFI_BREAK_MODIFIER 0x0026\r
-\r
-\r
-\r
/**\r
\r
This routine retrieves an array of GUID values for each keyboard\r
layout that was previously registered in the system.\r
\r
- @param This A pointer to the EFI_HII_PROTOCOL instance.\r
+ @param This A pointer to the EFI_HII_PROTOCOL instance.\r
\r
@param KeyGuidBufferLength On input, a pointer to the length\r
of the keyboard GUID buffer. On\r
output, the length of the handle\r
buffer that is required for the\r
- handles found. KeyGuidBuffer An\r
- array of keyboard layout GUID\r
+ handles found. \r
+ \r
+ @param KeyGuidBuffer An array of keyboard layout GUID\r
instances returned.\r
\r
- @retval EFI_SUCCESS KeyGuidBuffer was updated successfully.\r
+ @retval EFI_SUCCESS KeyGuidBuffer was updated successfully.\r
\r
@retval EFI_BUFFER_TOO_SMALL The KeyGuidBufferLength\r
parameter indicates that\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_HII_FIND_KEYBOARD_LAYOUTS) (\r
+(EFIAPI *EFI_HII_FIND_KEYBOARD_LAYOUTS)(\r
IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
IN OUT UINT16 *KeyGuidBufferLength,\r
OUT EFI_GUID *KeyGuidBuffer\r
/**\r
\r
This routine retrieves the requested keyboard layout. The layout\r
- is a physical description of the keys on a keyboard and the\r
+ is a physical description of the keys on a keyboard, and the\r
character(s) that are associated with a particular set of key\r
strokes.\r
\r
- @param This A pointer to the EFI_HII_PROTOCOL instance.\r
+ @param This A pointer to the EFI_HII_PROTOCOL instance.\r
\r
- @param KeyGuid A pointer to the unique ID associated with a\r
- given keyboard layout. If KeyGuid is NULL then\r
- the current layout will be retrieved.\r
+ @param KeyGuid A pointer to the unique ID associated with a\r
+ given keyboard layout. If KeyGuid is NULL then\r
+ the current layout will be retrieved.\r
+\r
+ @param KeyboardLayoutLength On input, a pointer to the length of the\r
+ KeyboardLayout buffer. On output, the length of\r
+ the data placed into KeyboardLayout.\r
\r
- @param KeyboardLayout A pointer to a buffer containing the\r
- retrieved keyboard layout. below.\r
+ @param KeyboardLayout A pointer to a buffer containing the\r
+ retrieved keyboard layout.\r
\r
@retval EFI_SUCCESS The keyboard layout was retrieved\r
successfully.\r
\r
- @retval EFI_NOT_FOUND The requested keyboard layout was not\r
- found.\r
+ @retval EFI_NOT_FOUND The requested keyboard layout was not found.\r
\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_HII_GET_KEYBOARD_LAYOUT) (\r
+(EFIAPI *EFI_HII_GET_KEYBOARD_LAYOUT)(\r
IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
IN CONST EFI_GUID *KeyGuid,\r
+ IN OUT UINT16 *KeyboardLayoutLength,\r
OUT EFI_HII_KEYBOARD_LAYOUT *KeyboardLayout\r
);\r
\r
current keyboard layout being changed can be notified of this\r
change.\r
\r
- @param This A pointer to the EFI_HII_DATABASE_PROTOCOL\r
- instance.\r
+ @param This A pointer to the EFI_HII_PROTOCOL instance.\r
\r
- @param KeyGuid A pointer to the unique ID associated with a\r
- given keyboard layout.\r
+ @param KeyGuid A pointer to the unique ID associated with a\r
+ given keyboard layout.\r
\r
+ @retval EFI_SUCCESS The current keyboard layout was successfully set.\r
\r
- @retval EFI_SUCCESS The current keyboard layout was\r
- successfully set.\r
- \r
- @retval EFI_NOT_FOUND The referenced keyboard layout was not\r
- found, so action was taken.\r
+ @retval EFI_NOT_FOUND The referenced keyboard layout was not\r
+ found, so action was taken.\r
\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_HII_SET_KEYBOARD_LAYOUT) (\r
+(EFIAPI *EFI_HII_SET_KEYBOARD_LAYOUT)(\r
IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
IN CONST EFI_GUID *KeyGuid\r
);\r
\r
Return the EFI handle associated with a package list.\r
\r
- @param This A pointer to the EFI_HII_DATABASE_PROTOCOL\r
- instance.\r
+ @param This A pointer to the EFI_HII_PROTOCOL instance.\r
\r
- @param PackageListHandle An EFI_HII_HANDLE that corresponds\r
+ @param PackageListHandle An EFI_HII_HANDLE that corresponds\r
to the desired package list in the\r
HIIdatabase.\r
\r
- @param DriverHandle On return, contains the EFI_HANDLE which\r
- was registered with the package list in\r
- NewPackageList().\r
+ @param DriverHandle On return, contains the EFI_HANDLE which\r
+ was registered with the package list in\r
+ NewPackageList().\r
\r
- @retval EFI_SUCCESS The DriverHandle was returned\r
- successfully.\r
+ @retval EFI_SUCCESS The DriverHandle was returned successfully.\r
\r
- @retval EFI_INVALID_PARAMETER The PackageListHandle was not\r
- valid.\r
+ @retval EFI_INVALID_PARAMETER The PackageListHandle was not valid.\r
\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_HII_GET_PACK_HANDLE) (\r
+(EFIAPI *EFI_HII_DATABASE_GET_PACK_HANDLE)(\r
IN CONST EFI_HII_DATABASE_PROTOCOL *This,\r
- IN CONST EFI_HII_HANDLE PackageListHandle,\r
+ IN EFI_HII_HANDLE PackageListHandle,\r
OUT EFI_HANDLE *DriverHandle\r
);\r
\r
-/**\r
- \r
- @param NewPackageList Add a new package list to the HII\r
- database.\r
-\r
- @param RemovePackageList Remove a package list from the HII\r
- database.\r
-\r
- @param UpdatePackageList Update a package list in the HII\r
- database.\r
-\r
- @param ListPackageLists List the handles of the package\r
- lists within the HII database. \r
-\r
- @param ExportPackageLists Export package lists from the HII\r
- database.\r
-\r
- @param RegisterPackageNotify Register notification when\r
- packages of a certain type are\r
- installed.\r
-\r
- @param UnregisterPackageNotify Unregister notification of\r
- packages.\r
-\r
- @param FindKeyboardLayouts Retrieves a list of the keyboard\r
- layouts in the system.\r
-\r
- @param GetKeyboardLayout Allows a program to extract the\r
- current keyboard layout. See the\r
- GetKeyboardLayout() function\r
- description.\r
-\r
- @param SetKeyboardLayout Changes the current keyboard layout.\r
- See the SetKeyboardLayout() function\r
-\r
-\r
-**/\r
+///\r
+/// Database manager for HII-related data structures.\r
+///\r
struct _EFI_HII_DATABASE_PROTOCOL {\r
- EFI_HII_NEW_PACK NewPackageList;\r
- EFI_HII_REMOVE_PACK RemovePackageList;\r
- EFI_HII_UPDATE_PACK UpdatePackageList;\r
- EFI_HII_LIST_PACKS ListPackageLists;\r
- EFI_HII_EXPORT_PACKS ExportPackageLists;\r
- EFI_HII_REGISTER_NOTIFY RegisterPackageNotify;\r
- EFI_HII_UNREGISTER_NOTIFY UnregisterPackageNotify;\r
- EFI_HII_FIND_KEYBOARD_LAYOUTS FindKeyboardLayouts;\r
- EFI_HII_GET_KEYBOARD_LAYOUT GetKeyboardLayout;\r
- EFI_HII_SET_KEYBOARD_LAYOUT SetKeyboardLayout;\r
- EFI_HII_GET_PACK_HANDLE GetPackageHandle;\r
+ EFI_HII_DATABASE_NEW_PACK NewPackageList;\r
+ EFI_HII_DATABASE_REMOVE_PACK RemovePackageList;\r
+ EFI_HII_DATABASE_UPDATE_PACK UpdatePackageList;\r
+ EFI_HII_DATABASE_LIST_PACKS ListPackageLists;\r
+ EFI_HII_DATABASE_EXPORT_PACKS ExportPackageLists;\r
+ EFI_HII_DATABASE_REGISTER_NOTIFY RegisterPackageNotify;\r
+ EFI_HII_DATABASE_UNREGISTER_NOTIFY UnregisterPackageNotify;\r
+ EFI_HII_FIND_KEYBOARD_LAYOUTS FindKeyboardLayouts;\r
+ EFI_HII_GET_KEYBOARD_LAYOUT GetKeyboardLayout;\r
+ EFI_HII_SET_KEYBOARD_LAYOUT SetKeyboardLayout;\r
+ EFI_HII_DATABASE_GET_PACK_HANDLE GetPackageListHandle;\r
};\r
\r
extern EFI_GUID gEfiHiiDatabaseProtocolGuid;\r
\r
#endif\r
\r
+\r