]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Uefi/UefiInternalFormRepresentation.h
MdePkg: Add reconnect definition in action request type and question attribute.
[mirror_edk2.git] / MdePkg / Include / Uefi / UefiInternalFormRepresentation.h
index fa35d602a05ec83575af3f4952df73fc442caa2f..1a77ea7c3e702f939bf0c3ac348ea239eb56c245 100644 (file)
@@ -3,17 +3,17 @@
   IFR is primarily consumed by the EFI presentation engine, and produced by EFI\r
   internal application and drivers as well as all add-in card option-ROM drivers\r
 \r
-  Copyright (c) 2006 - 2009, 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
+Copyright (c) 2006 - 2015, 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
   @par Revision Reference:\r
-  These definitions are from UEFI2.1.\r
+  These definitions are from UEFI 2.1 and 2.2.\r
 \r
 **/\r
 \r
@@ -32,6 +32,7 @@ typedef UINT16  EFI_QUESTION_ID;
 typedef UINT16  EFI_STRING_ID;\r
 typedef UINT16  EFI_FORM_ID;\r
 typedef UINT16  EFI_VARSTORE_ID;\r
+typedef UINT16  EFI_ANIMATION_ID;\r
 \r
 typedef UINT16  EFI_DEFAULT_ID;\r
 \r
@@ -82,28 +83,69 @@ typedef struct {
 \r
 //\r
 // Definitions for Simplified Font Package\r
-// Section 27.3.2\r
 //\r
 \r
-//\r
-// Contents of EFI_NARROW_GLYPH.Attributes\r
-//\r
+///\r
+/// Contents of EFI_NARROW_GLYPH.Attributes.\r
+///@{\r
 #define EFI_GLYPH_NON_SPACING                0x01\r
 #define EFI_GLYPH_WIDE                       0x02\r
 #define EFI_GLYPH_HEIGHT                     19\r
 #define EFI_GLYPH_WIDTH                      8\r
+///@}\r
 \r
+///\r
+/// The EFI_NARROW_GLYPH has a preferred dimension (w x h) of 8 x 19 pixels.\r
+///\r
 typedef struct {\r
+  ///\r
+  /// The Unicode representation of the glyph. The term weight is the \r
+  /// technical term for a character code.\r
+  ///\r
   CHAR16                 UnicodeWeight;\r
+  ///\r
+  /// The data element containing the glyph definitions.\r
+  ///\r
   UINT8                  Attributes;\r
+  ///\r
+  /// The column major glyph representation of the character. Bits \r
+  /// with values of one indicate that the corresponding pixel is to be\r
+  /// on when normally displayed; those with zero are off.\r
+  ///\r
   UINT8                  GlyphCol1[EFI_GLYPH_HEIGHT];\r
 } EFI_NARROW_GLYPH;\r
 \r
+///\r
+/// The EFI_WIDE_GLYPH has a preferred dimension (w x h) of 16 x 19 pixels, which is large enough \r
+/// to accommodate logographic characters.\r
+///\r
 typedef struct {\r
+  ///\r
+  /// The Unicode representation of the glyph. The term weight is the \r
+  /// technical term for a character code.\r
+  ///\r
   CHAR16                 UnicodeWeight;\r
+  ///\r
+  /// The data element containing the glyph definitions.\r
+  ///\r
   UINT8                  Attributes;\r
+  ///\r
+  /// The column major glyph representation of the character. Bits \r
+  /// with values of one indicate that the corresponding pixel is to be \r
+  /// on when normally displayed; those with zero are off.\r
+  ///\r
   UINT8                  GlyphCol1[EFI_GLYPH_HEIGHT];\r
+  ///\r
+  /// The column major glyph representation of the character. Bits \r
+  /// with values of one indicate that the corresponding pixel is to be \r
+  /// on when normally displayed; those with zero are off.\r
+  ///\r
   UINT8                  GlyphCol2[EFI_GLYPH_HEIGHT];\r
+  ///\r
+  /// Ensures that sizeof (EFI_WIDE_GLYPH) is twice the \r
+  /// sizeof (EFI_NARROW_GLYPH). The contents of Pad must \r
+  /// be zero.\r
+  ///\r
   UINT8                  Pad[3];\r
 } EFI_WIDE_GLYPH;\r
 \r
@@ -145,7 +187,7 @@ typedef struct _EFI_HII_GLYPH_INFO {
 } EFI_HII_GLYPH_INFO;\r
 \r
 ///\r
-/// The fixed header consists of a standard record header and\r
+/// The fixed header consists of a standard record header,\r
 /// then the character values in this section, the flags\r
 /// (including the encoding method) and the offsets of the glyph\r
 /// information, the glyph bitmaps and the character map.\r
@@ -258,10 +300,10 @@ typedef struct _EFI_HII_GIBT_SKIP2_BLOCK {
 /// The device path package is used to carry a device path\r
 /// associated with the package list.\r
 ///\r
-typedef struct _EFI_HII_DEVICE_PATH_PACKAGE {\r
+typedef struct _EFI_HII_DEVICE_PATH_PACKAGE_HDR {\r
   EFI_HII_PACKAGE_HEADER   Header;\r
   // EFI_DEVICE_PATH_PROTOCOL DevicePath[];\r
-} EFI_HII_DEVICE_PATH_PACKAGE;\r
+} EFI_HII_DEVICE_PATH_PACKAGE_HDR;\r
 \r
 //\r
 // Definitions for GUID Package\r
@@ -282,8 +324,8 @@ typedef struct _EFI_HII_GUID_PACKAGE_HDR {
 // Section 27.3.6\r
 //\r
 \r
-#define UEFI_CONFIG_LANG  "x-UEFI"\r
-#define UEFI_CONFIG_LANG2 "x-i-UEFI"\r
+#define UEFI_CONFIG_LANG   "x-UEFI"\r
+#define UEFI_CONFIG_LANG_2 "x-i-UEFI"\r
 \r
 ///\r
 /// The fixed header consists of a standard record header and then the string identifiers\r
@@ -596,13 +638,13 @@ typedef struct _EFI_HII_IMAGE_PALETTE_INFO {
 //\r
 \r
 ///\r
-/// The Forms package is used to carry forms-based encoding data.\r
+/// The Form package is used to carry form-based encoding data.\r
 ///\r
-typedef struct _EFI_HII_FORM_PACKAGE {\r
+typedef struct _EFI_HII_FORM_PACKAGE_HDR {\r
   EFI_HII_PACKAGE_HEADER       Header;\r
   // EFI_IFR_OP_HEADER         OpCodeHeader;\r
   // More op-codes follow\r
-} EFI_HII_FORM_PACKAGE;\r
+} EFI_HII_FORM_PACKAGE_HDR;\r
 \r
 typedef struct {\r
   UINT8 Hour;\r
@@ -616,6 +658,13 @@ typedef struct {
   UINT8  Day;\r
 } EFI_HII_DATE;\r
 \r
+typedef struct {\r
+  EFI_QUESTION_ID QuestionId;\r
+  EFI_FORM_ID     FormId;\r
+  EFI_GUID        FormSetGuid;\r
+  EFI_STRING_ID   DevicePath;\r
+} EFI_HII_REF;\r
+\r
 typedef union {\r
   UINT8           u8;\r
   UINT16          u16;\r
@@ -625,7 +674,8 @@ typedef union {
   EFI_HII_TIME    time;\r
   EFI_HII_DATE    date;\r
   EFI_STRING_ID   string; ///< EFI_IFR_TYPE_STRING, EFI_IFR_TYPE_ACTION\r
-  // UINT8 buffer[];      ///< EFI_IFR_TYPE_ORDERED_LIST\r
+  EFI_HII_REF     ref;    ///< EFI_IFR_TYPE_REF\r
+  // UINT8 buffer[];      ///< EFI_IFR_TYPE_BUFFER\r
 } EFI_IFR_TYPE_VALUE;\r
 \r
 //\r
@@ -650,7 +700,7 @@ typedef union {
 #define EFI_IFR_INCONSISTENT_IF_OP     0x11\r
 #define EFI_IFR_EQ_ID_VAL_OP           0x12\r
 #define EFI_IFR_EQ_ID_ID_OP            0x13\r
-#define EFI_IFR_EQ_ID_LIST_OP          0x14\r
+#define EFI_IFR_EQ_ID_VAL_LIST_OP      0x14\r
 #define EFI_IFR_AND_OP                 0x15\r
 #define EFI_IFR_OR_OP                  0x16\r
 #define EFI_IFR_NOT_OP                 0x17\r
@@ -661,6 +711,7 @@ typedef union {
 #define EFI_IFR_STRING_OP              0x1C\r
 #define EFI_IFR_REFRESH_OP             0x1D\r
 #define EFI_IFR_DISABLE_IF_OP          0x1E\r
+#define EFI_IFR_ANIMATION_OP           0x1F\r
 #define EFI_IFR_TO_LOWER_OP            0x20\r
 #define EFI_IFR_TO_UPPER_OP            0x21\r
 #define EFI_IFR_MAP_OP                 0x22\r
@@ -672,8 +723,8 @@ typedef union {
 #define EFI_IFR_VERSION_OP             0x28\r
 #define EFI_IFR_END_OP                 0x29\r
 #define EFI_IFR_MATCH_OP               0x2A\r
-#define EFI_IFR_SET_OP                 0x2C\r
 #define EFI_IFR_GET_OP                 0x2B\r
+#define EFI_IFR_SET_OP                 0x2C\r
 #define EFI_IFR_READ_OP                0x2D\r
 #define EFI_IFR_WRITE_OP               0x2E\r
 #define EFI_IFR_EQUAL_OP               0x2F\r
@@ -726,6 +777,10 @@ typedef union {
 #define EFI_IFR_CATENATE_OP            0x5E\r
 #define EFI_IFR_GUID_OP                0x5F\r
 #define EFI_IFR_SECURITY_OP            0x60\r
+#define EFI_IFR_MODAL_TAG_OP           0x61\r
+#define EFI_IFR_REFRESH_ID_OP          0x62\r
+#define EFI_IFR_WARNING_IF_OP          0x63\r
+#define EFI_IFR_MATCH2_OP              0x64\r
 \r
 //\r
 // Definitions of IFR Standard Headers\r
@@ -757,10 +812,11 @@ typedef struct _EFI_IFR_QUESTION_HEADER {
 //\r
 // Flag values of EFI_IFR_QUESTION_HEADER\r
 //\r
-#define EFI_IFR_FLAG_READ_ONLY         0x01\r
-#define EFI_IFR_FLAG_CALLBACK          0x04\r
-#define EFI_IFR_FLAG_RESET_REQUIRED    0x10\r
-#define EFI_IFR_FLAG_OPTIONS_ONLY      0x80\r
+#define EFI_IFR_FLAG_READ_ONLY          0x01\r
+#define EFI_IFR_FLAG_CALLBACK           0x04\r
+#define EFI_IFR_FLAG_RESET_REQUIRED     0x10\r
+#define EFI_IFR_FLAG_RECONNECT_REQUIRED 0x40\r
+#define EFI_IFR_FLAG_OPTIONS_ONLY       0x80\r
 \r
 //\r
 // Definition for Opcode Reference\r
@@ -798,6 +854,8 @@ typedef struct _EFI_IFR_VARSTORE_EFI {
   EFI_VARSTORE_ID          VarStoreId;\r
   EFI_GUID                 Guid;\r
   UINT32                   Attributes;\r
+  UINT16                   Size;\r
+  UINT8                    Name[1];\r
 } EFI_IFR_VARSTORE_EFI;\r
 \r
 typedef struct _EFI_IFR_VARSTORE_NAME_VALUE {\r
@@ -830,6 +888,10 @@ typedef struct _EFI_IFR_IMAGE {
   EFI_IMAGE_ID             Id;\r
 } EFI_IFR_IMAGE;\r
 \r
+typedef struct _EFI_IFR_MODAL_TAG {\r
+  EFI_IFR_OP_HEADER        Header;\r
+} EFI_IFR_MODAL_TAG;\r
+\r
 typedef struct _EFI_IFR_LOCKED {\r
   EFI_IFR_OP_HEADER        Header;\r
 } EFI_IFR_LOCKED;\r
@@ -846,6 +908,12 @@ typedef struct _EFI_IFR_DEFAULT {
   EFI_IFR_TYPE_VALUE       Value;\r
 } EFI_IFR_DEFAULT;\r
 \r
+typedef struct _EFI_IFR_DEFAULT_2 {\r
+  EFI_IFR_OP_HEADER        Header;\r
+  UINT16                   DefaultId;\r
+  UINT8                    Type;\r
+} EFI_IFR_DEFAULT_2;\r
+\r
 typedef struct _EFI_IFR_VALUE {\r
   EFI_IFR_OP_HEADER        Header;\r
 } EFI_IFR_VALUE;\r
@@ -903,6 +971,11 @@ typedef struct _EFI_IFR_REF4 {
   EFI_STRING_ID            DevicePath;\r
 } EFI_IFR_REF4;\r
 \r
+typedef struct _EFI_IFR_REF5 {\r
+  EFI_IFR_OP_HEADER Header;\r
+  EFI_IFR_QUESTION_HEADER Question;\r
+} EFI_IFR_REF5;\r
+\r
 typedef struct _EFI_IFR_RESET_BUTTON {\r
   EFI_IFR_OP_HEADER        Header;\r
   EFI_IFR_STATEMENT_HEADER Statement;\r
@@ -1056,6 +1129,12 @@ typedef struct _EFI_IFR_NO_SUBMIT_IF {
   EFI_STRING_ID            Error;\r
 } EFI_IFR_NO_SUBMIT_IF;\r
 \r
+typedef struct _EFI_IFR_WARNING_IF {\r
+  EFI_IFR_OP_HEADER        Header;\r
+  EFI_STRING_ID            Warning;\r
+  UINT8                    TimeOut;\r
+} EFI_IFR_WARNING_IF;\r
+\r
 typedef struct _EFI_IFR_REFRESH {\r
   EFI_IFR_OP_HEADER        Header;\r
   UINT8                    RefreshInterval;\r
@@ -1089,6 +1168,7 @@ typedef struct _EFI_IFR_ONE_OF_OPTION {
 #define EFI_IFR_TYPE_UNDEFINED         0x09\r
 #define EFI_IFR_TYPE_ACTION            0x0A\r
 #define EFI_IFR_TYPE_BUFFER            0x0B\r
+#define EFI_IFR_TYPE_REF               0x0C\r
 \r
 #define EFI_IFR_OPTION_DEFAULT         0x10\r
 #define EFI_IFR_OPTION_DEFAULT_MFG     0x20\r
@@ -1099,6 +1179,11 @@ typedef struct _EFI_IFR_GUID {
   //Optional Data Follows\r
 } EFI_IFR_GUID;\r
 \r
+typedef struct _EFI_IFR_REFRESH_ID {\r
+  EFI_IFR_OP_HEADER Header;\r
+  EFI_GUID          RefreshEventGroupId;\r
+} EFI_IFR_REFRESH_ID;\r
+\r
 typedef struct _EFI_IFR_DUP {\r
   EFI_IFR_OP_HEADER        Header;\r
 } EFI_IFR_DUP;\r
@@ -1228,25 +1313,28 @@ typedef struct _EFI_IFR_TO_BOOLEAN {
   EFI_IFR_OP_HEADER        Header;\r
 } EFI_IFR_TO_BOOLEAN;\r
 \r
-//\r
-// For EFI_IFR_TO_STRING, when converting from\r
-// unsigned integers, these flags control the format:\r
-// 0 = unsigned decimal\r
-// 1 = signed decimal\r
-// 2 = hexadecimal (lower-case alpha)\r
-// 3 = hexadecimal (upper-case alpha)\r
-//\r
+///\r
+/// For EFI_IFR_TO_STRING, when converting from\r
+/// unsigned integers, these flags control the format:\r
+/// 0 = unsigned decimal.\r
+/// 1 = signed decimal.\r
+/// 2 = hexadecimal (lower-case alpha).\r
+/// 3 = hexadecimal (upper-case alpha).\r
+///@{\r
 #define EFI_IFR_STRING_UNSIGNED_DEC      0\r
 #define EFI_IFR_STRING_SIGNED_DEC        1\r
 #define EFI_IFR_STRING_LOWERCASE_HEX     2\r
 #define EFI_IFR_STRING_UPPERCASE_HEX     3\r
-//\r
-// When converting from a buffer, these flags control the format:\r
-// 0 = ASCII\r
-// 8 = Unicode\r
-//\r
+///@}\r
+\r
+///\r
+/// When converting from a buffer, these flags control the format:\r
+/// 0 = ASCII.\r
+/// 8 = Unicode.\r
+///@{\r
 #define EFI_IFR_STRING_ASCII             0\r
 #define EFI_IFR_STRING_UNICODE           8\r
+///@}\r
 \r
 typedef struct _EFI_IFR_TO_STRING {\r
   EFI_IFR_OP_HEADER        Header;\r
@@ -1313,6 +1401,11 @@ typedef struct _EFI_IFR_MATCH {
   EFI_IFR_OP_HEADER        Header;\r
 } EFI_IFR_MATCH;\r
 \r
+typedef struct _EFI_IFR_MATCH2 {\r
+  EFI_IFR_OP_HEADER        Header;\r
+  EFI_GUID                 SyntaxType;\r
+} EFI_IFR_MATCH2;\r
+\r
 typedef struct _EFI_IFR_MULTIPLY {\r
   EFI_IFR_OP_HEADER        Header;\r
 } EFI_IFR_MULTIPLY;\r
@@ -1413,7 +1506,7 @@ typedef struct _EFI_IFR_FORM_MAP {
   ///\r
   /// One or more configuration method's name and unique identifier.\r
   ///\r
-  EFI_IFR_FORM_MAP_METHOD  Methods[1];\r
+  // EFI_IFR_FORM_MAP_METHOD  Methods[];\r
 } EFI_IFR_FORM_MAP;\r
 \r
 typedef struct _EFI_IFR_SET {\r
@@ -1437,6 +1530,10 @@ typedef struct _EFI_IFR_SET {
     ///\r
     UINT16           VarOffset;\r
   }                  VarStoreInfo;\r
+  ///\r
+  /// Specifies the type used for storage. \r
+  ///\r
+  UINT8              VarStoreType;\r
 } EFI_IFR_SET;\r
 \r
 typedef struct _EFI_IFR_GET {\r
@@ -1594,11 +1691,31 @@ typedef enum {
 } EFI_KEY;\r
 \r
 typedef struct {\r
+  ///\r
+  /// Used to describe a physical key on a keyboard.\r
+  ///\r
   EFI_KEY                 Key;\r
+  ///\r
+  /// Unicode character code for the Key.\r
+  ///\r
   CHAR16                  Unicode;\r
+  ///\r
+  /// Unicode character code for the key with the shift key being held down.\r
+  ///\r
   CHAR16                  ShiftedUnicode;\r
+  ///\r
+  /// Unicode character code for the key with the Alt-GR being held down.\r
+  ///\r
   CHAR16                  AltGrUnicode;\r
+  ///\r
+  /// Unicode character code for the key with the Alt-GR and shift keys being held down.\r
+  ///\r
   CHAR16                  ShiftedAltGrUnicode;\r
+  ///\r
+  /// Modifier keys are defined to allow for special functionality that is not necessarily \r
+  /// accomplished by a printable character. Many of these modifier keys are flags to toggle \r
+  /// certain state bits on and off inside of a keyboard driver.\r
+  ///\r
   UINT16                  Modifier;\r
   UINT16                  AffectedAttribute;\r
 } EFI_KEY_DESCRIPTOR;\r
@@ -1692,6 +1809,293 @@ typedef struct {
 #define EFI_RIGHT_LOGO_MODIFIER          0x0028\r
 #define EFI_MENU_MODIFIER                0x0029\r
 \r
+///\r
+/// Animation IFR opcode\r
+///\r
+typedef struct _EFI_IFR_ANIMATION {\r
+  ///\r
+  /// Standard opcode header, where Header.OpCode is \r
+  /// EFI_IFR_ANIMATION_OP.\r
+  ///\r
+  EFI_IFR_OP_HEADER        Header;\r
+  ///\r
+  /// Animation identifier in the HII database.\r
+  ///\r
+  EFI_ANIMATION_ID         Id;\r
+} EFI_IFR_ANIMATION;\r
+\r
+///\r
+/// HII animation package header.\r
+///\r
+typedef struct _EFI_HII_ANIMATION_PACKAGE_HDR {\r
+  ///\r
+  /// Standard package header, where Header.Type = EFI_HII_PACKAGE_ANIMATIONS.\r
+  ///\r
+  EFI_HII_PACKAGE_HEADER  Header;\r
+  ///\r
+  /// Offset, relative to this header, of the animation information. If \r
+  /// this is zero, then there are no animation sequences in the package.\r
+  ///\r
+  UINT32                  AnimationInfoOffset;\r
+} EFI_HII_ANIMATION_PACKAGE_HDR;\r
+\r
+///\r
+/// Animation information is encoded as a series of blocks,\r
+/// with each block prefixed by a single byte header EFI_HII_ANIMATION_BLOCK.\r
+///\r
+typedef struct _EFI_HII_ANIMATION_BLOCK {\r
+  UINT8  BlockType;\r
+  //UINT8  BlockBody[];\r
+} EFI_HII_ANIMATION_BLOCK;\r
+\r
+///\r
+/// Animation block types.\r
+///\r
+#define EFI_HII_AIBT_END                 0x00\r
+#define EFI_HII_AIBT_OVERLAY_IMAGES      0x10\r
+#define EFI_HII_AIBT_CLEAR_IMAGES        0x11\r
+#define EFI_HII_AIBT_RESTORE_SCRN        0x12\r
+#define EFI_HII_AIBT_OVERLAY_IMAGES_LOOP 0x18\r
+#define EFI_HII_AIBT_CLEAR_IMAGES_LOOP   0x19\r
+#define EFI_HII_AIBT_RESTORE_SCRN_LOOP   0x1A\r
+#define EFI_HII_AIBT_DUPLICATE           0x20\r
+#define EFI_HII_AIBT_SKIP2               0x21\r
+#define EFI_HII_AIBT_SKIP1               0x22\r
+#define EFI_HII_AIBT_EXT1                0x30\r
+#define EFI_HII_AIBT_EXT2                0x31\r
+#define EFI_HII_AIBT_EXT4                0x32\r
+\r
+///\r
+/// Extended block headers used for variable sized animation records\r
+/// which need an explicit length.\r
+///\r
+\r
+typedef struct _EFI_HII_AIBT_EXT1_BLOCK  {\r
+  ///\r
+  /// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT1.\r
+  ///\r
+  EFI_HII_ANIMATION_BLOCK  Header;\r
+  ///\r
+  /// The block type.\r
+  ///\r
+  UINT8                    BlockType2;\r
+  ///\r
+  /// Size of the animation block, in bytes, including the animation block header.\r
+  ///\r
+  UINT8                    Length;\r
+} EFI_HII_AIBT_EXT1_BLOCK;\r
+\r
+typedef struct _EFI_HII_AIBT_EXT2_BLOCK {\r
+  ///\r
+  /// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT2.\r
+  ///\r
+  EFI_HII_ANIMATION_BLOCK  Header;\r
+  ///\r
+  /// The block type\r
+  ///\r
+  UINT8                    BlockType2;\r
+  ///\r
+  /// Size of the animation block, in bytes, including the animation block header.\r
+  ///\r
+  UINT16                   Length;\r
+} EFI_HII_AIBT_EXT2_BLOCK;\r
+\r
+typedef struct _EFI_HII_AIBT_EXT4_BLOCK {\r
+  ///\r
+  /// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT4.\r
+  ///\r
+  EFI_HII_ANIMATION_BLOCK  Header;\r
+  ///\r
+  /// The block type\r
+  ///\r
+  UINT8                    BlockType2;\r
+  ///\r
+  /// Size of the animation block, in bytes, including the animation block header.\r
+  ///\r
+  UINT32                   Length;\r
+} EFI_HII_AIBT_EXT4_BLOCK;\r
+\r
+typedef struct _EFI_HII_ANIMATION_CELL {\r
+  ///\r
+  /// The X offset from the upper left hand corner of the logical \r
+  /// window to position the indexed image.\r
+  ///\r
+  UINT16                    OffsetX;\r
+  ///\r
+  /// The Y offset from the upper left hand corner of the logical \r
+  /// window to position the indexed image.\r
+  ///\r
+  UINT16                    OffsetY;\r
+  ///\r
+  /// The image to display at the specified offset from the upper left \r
+  /// hand corner of the logical window.\r
+  ///\r
+  EFI_IMAGE_ID              ImageId;\r
+  ///\r
+  /// The number of milliseconds to delay after displaying the indexed \r
+  /// image and before continuing on to the next linked image.  If value \r
+  /// is zero, no delay.\r
+  ///\r
+  UINT16                    Delay;\r
+} EFI_HII_ANIMATION_CELL;\r
+\r
+///\r
+/// An animation block to describe an animation sequence that does not cycle, and\r
+/// where one image is simply displayed over the previous image.\r
+///\r
+typedef struct _EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK {\r
+  ///\r
+  /// This is image that is to be reference by the image protocols, if the \r
+  /// animation function is not supported or disabled. This image can \r
+  /// be one particular image from the animation sequence (if any one \r
+  /// of the animation frames has a complete image) or an alternate \r
+  /// image that can be displayed alone. If the value is zero, no image \r
+  /// is displayed.\r
+  ///\r
+  EFI_IMAGE_ID            DftImageId;\r
+  ///\r
+  /// The overall width of the set of images (logical window width).\r
+  ///\r
+  UINT16                  Width;\r
+  ///\r
+  /// The overall height of the set of images (logical window height).\r
+  ///\r
+  UINT16                  Height;\r
+  ///\r
+  /// The number of EFI_HII_ANIMATION_CELL contained in the \r
+  /// animation sequence.\r
+  ///\r
+  UINT16                  CellCount;\r
+  ///\r
+  /// An array of CellCount animation cells.\r
+  ///\r
+  EFI_HII_ANIMATION_CELL  AnimationCell[1];\r
+} EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK;\r
+\r
+///\r
+/// An animation block to describe an animation sequence that does not cycle,\r
+/// and where the logical window is cleared to the specified color before \r
+/// the next image is displayed.\r
+///\r
+typedef struct _EFI_HII_AIBT_CLEAR_IMAGES_BLOCK {\r
+  ///\r
+  /// This is image that is to be reference by the image protocols, if the \r
+  /// animation function is not supported or disabled. This image can \r
+  /// be one particular image from the animation sequence (if any one \r
+  /// of the animation frames has a complete image) or an alternate \r
+  /// image that can be displayed alone. If the value is zero, no image \r
+  /// is displayed.\r
+  ///\r
+  EFI_IMAGE_ID       DftImageId;\r
+  ///\r
+  /// The overall width of the set of images (logical window width).\r
+  ///\r
+  UINT16             Width;\r
+  ///\r
+  /// The overall height of the set of images (logical window height).\r
+  ///\r
+  UINT16             Height;\r
+  ///\r
+  /// The number of EFI_HII_ANIMATION_CELL contained in the \r
+  /// animation sequence.\r
+  ///\r
+  UINT16             CellCount;\r
+  ///\r
+  /// The color to clear the logical window to before displaying the \r
+  /// indexed image.\r
+  ///\r
+  EFI_HII_RGB_PIXEL  BackgndColor;\r
+  ///\r
+  /// An array of CellCount animation cells.\r
+  ///\r
+  EFI_HII_ANIMATION_CELL AnimationCell[1];\r
+} EFI_HII_AIBT_CLEAR_IMAGES_BLOCK;\r
+\r
+///\r
+/// An animation block to describe an animation sequence that does not cycle,\r
+/// and where the screen is restored to the original state before the next \r
+/// image is displayed.\r
+///\r
+typedef struct _EFI_HII_AIBT_RESTORE_SCRN_BLOCK {\r
+  ///\r
+  /// This is image that is to be reference by the image protocols, if the \r
+  /// animation function is not supported or disabled. This image can \r
+  /// be one particular image from the animation sequence (if any one \r
+  /// of the animation frames has a complete image) or an alternate \r
+  /// image that can be displayed alone. If the value is zero, no image \r
+  /// is displayed.\r
+  ///\r
+  EFI_IMAGE_ID            DftImageId;\r
+  ///\r
+  /// The overall width of the set of images (logical window width).\r
+  ///\r
+  UINT16                  Width;\r
+  ///\r
+  /// The overall height of the set of images (logical window height).\r
+  ///\r
+  UINT16                  Height;\r
+  ///\r
+  /// The number of EFI_HII_ANIMATION_CELL contained in the \r
+  /// animation sequence.\r
+  ///\r
+  UINT16                  CellCount;\r
+  ///\r
+  /// An array of CellCount animation cells.\r
+  ///\r
+  EFI_HII_ANIMATION_CELL  AnimationCell[1];\r
+} EFI_HII_AIBT_RESTORE_SCRN_BLOCK;\r
+\r
+///\r
+/// An animation block to describe an animation sequence that continuously cycles,\r
+/// and where one image is simply displayed over the previous image.\r
+///\r
+typedef EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK  EFI_HII_AIBT_OVERLAY_IMAGES_LOOP_BLOCK;\r
+\r
+///\r
+/// An animation block to describe an animation sequence that continuously cycles,\r
+/// and where the logical window is cleared to the specified color before \r
+/// the next image is displayed.\r
+///\r
+typedef EFI_HII_AIBT_CLEAR_IMAGES_BLOCK    EFI_HII_AIBT_CLEAR_IMAGES_LOOP_BLOCK;\r
+\r
+///\r
+/// An animation block to describe an animation sequence that continuously cycles,\r
+/// and where the screen is restored to the original state before \r
+/// the next image is displayed.\r
+///\r
+typedef EFI_HII_AIBT_RESTORE_SCRN_BLOCK    EFI_HII_AIBT_RESTORE_SCRN_LOOP_BLOCK;\r
+\r
+///\r
+/// Assigns a new character value to a previously defined animation sequence.\r
+///\r
+typedef struct _EFI_HII_AIBT_DUPLICATE_BLOCK {\r
+  ///\r
+  /// The previously defined animation ID with the exact same \r
+  /// animation information.\r
+  ///\r
+  EFI_ANIMATION_ID  AnimationId;\r
+} EFI_HII_AIBT_DUPLICATE_BLOCK;\r
+\r
+///\r
+/// Skips animation IDs.\r
+///\r
+typedef struct _EFI_HII_AIBT_SKIP1_BLOCK {\r
+  ///\r
+  /// The unsigned 8-bit value to add to AnimationIdCurrent.\r
+  ///\r
+  UINT8  SkipCount;\r
+} EFI_HII_AIBT_SKIP1_BLOCK;\r
+\r
+///\r
+/// Skips animation IDs.\r
+///\r
+typedef struct _EFI_HII_AIBT_SKIP2_BLOCK {\r
+  ///\r
+  /// The unsigned 16-bit value to add to AnimationIdCurrent.\r
+  ///\r
+  UINT16  SkipCount;\r
+} EFI_HII_AIBT_SKIP2_BLOCK;\r
+\r
 #pragma pack()\r
 \r
 \r