]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Protocol/HiiDatabase.h
MdePkg FirmwareManagement.h: Fix typo EFI_SECURITY_VIOLATIO
[mirror_edk2.git] / MdePkg / Include / Protocol / HiiDatabase.h
index 666c44d744566fac06278d44456bf956d2bb3905..5ba50f8b15807300041355bee433005e3e170281 100644 (file)
@@ -2,16 +2,14 @@
   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
@@ -1491,9 +48,10 @@ typedef UINTN   EFI_HII_DATABASE_NOTIFY_TYPE;
                       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
@@ -1502,12 +60,12 @@ typedef UINTN   EFI_HII_DATABASE_NOTIFY_TYPE;
 **/\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
@@ -1522,35 +80,34 @@ EFI_STATUS
   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
@@ -1563,23 +120,21 @@ EFI_STATUS
   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
@@ -1594,7 +149,7 @@ EFI_STATUS
   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
@@ -1606,29 +161,28 @@ EFI_STATUS
   - 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
@@ -1640,55 +194,52 @@ EFI_STATUS
   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 outputted 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 HandleBufferLength was NULL.\r
+  @retval EFI_INVALID_PARAMETER The value referenced by HandleBufferLength was not\r
+                                zero and Handle 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
@@ -1701,36 +252,42 @@ EFI_STATUS
   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
+  @retval EFI_NOT_FOUND         The specified Handle could not be found in the\r
+                                current database.\r
+  \r
+  @retval EFI_INVALID_PARAMETER BufferSize was NULL.\r
+  \r
+  @retval EFI_INVALID_PARAMETER The value referenced by BufferSize was not zero \r
+                                and Buffer was NULL.\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
@@ -1747,54 +304,52 @@ EFI_STATUS
   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
@@ -1803,245 +358,42 @@ EFI_STATUS
    \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
@@ -2050,11 +402,16 @@ typedef struct {
                                 KeyGuidBufferLength is updated\r
                                 with a value that will enable\r
                                 the data to fit.\r
+  @retval EFI_INVALID_PARAMETER The KeyGuidBufferLength is NULL.\r
+  @retval EFI_INVALID_PARAMETER The value referenced by \r
+                                KeyGuidBufferLength is not\r
+                                zero and KeyGuidBuffer is NULL.\r
+  @retval EFI_NOT_FOUND         There was no keyboard layout.\r
 \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
@@ -2064,31 +421,35 @@ EFI_STATUS
 /**\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
@@ -2101,23 +462,20 @@ EFI_STATUS
   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
@@ -2126,84 +484,48 @@ EFI_STATUS
    \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