]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/HiiDatabase.h
Following UEFI spec to do auto booting after a time-out. This feature is implemented
[mirror_edk2.git] / EdkCompatibilityPkg / Compatibility / FrameworkHiiToUefiHiiThunk / HiiDatabase.h
index 9934e3c2812f355769df689cd8f2f08fd97eada1..9eff9a264f997a127b1d9c27fc99105105656c4a 100644 (file)
@@ -1,7 +1,7 @@
 /**@file\r
 \r
   This file contains global defines and prototype definitions\r
-  for the HII database.\r
+  for the Framework HII to Uefi HII Thunk Module.\r
   \r
 Copyright (c) 2006 - 2008, Intel Corporation\r
 All rights reserved. This program and the accompanying materials\r
@@ -23,6 +23,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Guid/GlobalVariable.h>\r
 #include <Protocol/FrameworkFormCallback.h>\r
 #include <Protocol/FrameworkHii.h>\r
+#include <Protocol/FrameworkFormBrowser.h>\r
 \r
 //\r
 // UEFI HII Protocols\r
@@ -33,6 +34,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Protocol/HiiDatabase.h>\r
 #include <Protocol/HiiConfigRouting.h>\r
 #include <Protocol/HiiConfigAccess.h>\r
+#include <Protocol/UgaDraw.h>\r
 \r
 \r
 #include <Library/BaseLib.h>\r
@@ -42,165 +44,225 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Library/BaseMemoryLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
 #include <Library/UefiRuntimeServicesTableLib.h>\r
-#include <Library/FrameworkIfrSupportLib.h>\r
 #include <Library/HiiLib.h>\r
 #include <Library/ExtendedHiiLib.h>\r
+#include <Library/UefiLib.h>\r
 \r
-//\r
-// Macros\r
-//\r
+#include <Library/IfrSupportLib.h>\r
+#include <Library/ExtendedIfrSupportLib.h>\r
+#include <Library/PcdLib.h>\r
+\r
+#include <MdeModuleHii.h>\r
+\r
+#include "UefiIfrParser.h"\r
 \r
 \r
 //\r
-// Typedef\r
+// VARSTORE ID of 0 for Buffer Storage Type Storage is defined as invalid in UEFI 2.1 HII. VARSTORE ID\r
+// 0 is the default VarStore ID for storage without explicit declaration in Framework HII 0.92. EDK II UEFI VFR compiler\r
+// in compatible mode will assign 0x0001 as UEFI VARSTORE ID to this default storage id in Framework VFR without\r
+// VARSTORE declaration.\r
+// \r
+// In addition, the Name of Default VarStore is assumed to be L"Setup" for those storage without explicit VARSTORE declaration in the formset\r
+// by Framework HII. EDK II UEFI VFR compiler in compatible mode hard-coded L"Setup" as VARSTORE name.\r
 //\r
+#define FRAMEWORK_RESERVED_VARSTORE_ID 0x0001\r
+#define FRAMEWORK_RESERVED_VARSTORE_NAME L"Setup"\r
 \r
+\r
+#pragma pack (1)\r
 typedef struct {\r
-  UINT32                  BinaryLength;\r
+  EFI_HII_PACK_HEADER     FrameworkPackageHeader;\r
   EFI_HII_PACKAGE_HEADER  PackageHeader;\r
 } TIANO_AUTOGEN_PACKAGES_HEADER;\r
+#pragma pack ()\r
 \r
-#define EFI_HII_THUNK_PRIVATE_DATA_FROM_THIS(Record)   CR(Record, EFI_HII_THUNK_PRIVATE_DATA, Hii, EFI_HII_THUNK_DRIVER_DATA_SIGNATURE)\r
-#define EFI_HII_THUNK_DRIVER_DATA_SIGNATURE            EFI_SIGNATURE_32 ('H', 'i', 'I', 'T')\r
+#define HII_THUNK_PRIVATE_DATA_FROM_THIS(Record)  CR(Record, HII_THUNK_PRIVATE_DATA, Hii, HII_THUNK_PRIVATE_DATA_SIGNATURE)\r
+#define HII_THUNK_PRIVATE_DATA_SIGNATURE            SIGNATURE_32 ('H', 'i', 'I', 'T')\r
 typedef struct {\r
   UINTN                    Signature;\r
   EFI_HANDLE               Handle;\r
   EFI_HII_PROTOCOL         Hii;\r
-  FRAMEWORK_EFI_HII_HANDLE StaticHiiHandle;\r
 \r
   //\r
-  // This LIST_ENTRY is the list head which has HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY type \r
-  // as list entry.\r
+  // The head of link list for all HII_THUNK_CONTEXT.\r
   //\r
-  LIST_ENTRY               HiiThunkHandleMappingDBListHead;\r
-  \r
-} EFI_HII_THUNK_PRIVATE_DATA;\r
+  LIST_ENTRY               ThunkContextListHead;\r
+\r
+  EFI_HANDLE               RemovePackNotifyHandle;\r
+  EFI_HANDLE               AddPackNotifyHandle;\r
+} HII_THUNK_PRIVATE_DATA;\r
+\r
+\r
+\r
+\r
+\r
+#define QUESTION_ID_MAP_ENTRY_FROM_LINK(Record) CR(Record, QUESTION_ID_MAP_ENTRY, Link, QUESTION_ID_MAP_ENTRY_SIGNATURE)\r
+#define QUESTION_ID_MAP_ENTRY_SIGNATURE            SIGNATURE_32 ('Q', 'I', 'M', 'E')\r
+typedef struct {\r
+  UINT32            Signature;\r
+  LIST_ENTRY        Link;\r
+  UINT16            FwQId;\r
+  EFI_QUESTION_ID   UefiQid;\r
+} QUESTION_ID_MAP_ENTRY;\r
+\r
 \r
 \r
-#define HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY_FROM_LISTENTRY(Record) CR(Record, HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY, List, HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY_SIGNATURE)\r
-#define HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY_SIGNATURE            EFI_SIGNATURE_32 ('H', 'T', 'H', 'M')\r
+#define QUESTION_ID_MAP_FROM_LINK(Record) CR(Record, QUESTION_ID_MAP, Link, QUESTION_ID_MAP_SIGNATURE)\r
+#define QUESTION_ID_MAP_SIGNATURE            SIGNATURE_32 ('Q', 'I', 'M', 'P')\r
 typedef struct {\r
-  LIST_ENTRY                List;\r
+  UINT32            Signature;\r
+  LIST_ENTRY        Link;\r
+  UINT16            VarStoreId;\r
+  UINTN             VarSize;\r
+  LIST_ENTRY        MapEntryListHead;\r
+} QUESTION_ID_MAP;\r
+\r
+\r
+\r
+#define HII_THUNK_CONTEXT_FROM_LINK(Record) CR(Record, HII_THUNK_CONTEXT, Link, HII_THUNK_CONTEXT_SIGNATURE)\r
+#define HII_THUNK_CONTEXT_SIGNATURE            SIGNATURE_32 ('H', 'T', 'H', 'M')\r
+typedef struct {\r
+  LIST_ENTRY                Link;\r
   UINT32                    Signature;\r
-  FRAMEWORK_EFI_HII_HANDLE  FrameworkHiiHandle;\r
+  FRAMEWORK_EFI_HII_HANDLE  FwHiiHandle;\r
   EFI_HII_HANDLE            UefiHiiHandle;\r
+  EFI_HANDLE                UefiHiiDriverHandle;\r
+\r
+  UINTN                     IfrPackageCount;\r
+  UINTN                     StringPackageCount;\r
+\r
+  BOOLEAN                   ByFrameworkHiiNewPack;\r
 \r
-  BOOLEAN                   IsPackageListWithOnlyStringPackages;\r
   //\r
-  // The field below is only valid if IsPackageListWithOnlyStringPack is TRUE.\r
-  // The HII 0.92 version of HII data implementation in EDK 1.03 and 1.04 make an the following assumption\r
-  // in both HII Database implementation and all modules that registering packages:\r
-  // If a Package List has only IFR package and no String Package, the String Package containing the strings \r
-  // referenced by this IFR package is in another Package List\r
-  // registered with the HII database with the same EFI_HII_PACKAGES.GuidId.\r
+  // HII Thunk will use TagGuid to associate the String Package and Form Package togehter.\r
+  // See description for TagGuid. This field is to record if either one of the following condition \r
+  // is TRUE:\r
+  // 1) if ((SharingStringPack == TRUE) && (StringPackageCount != 0 && IfrPackageCount == 0)), then this Package List only \r
+  ///   has String Packages and provides Strings to other IFR package.\r
+  // 2) if ((SharingStringPack == TRUE) && (StringPackageCount == 0 && IfrPackageCount != 1)), then this Form Package\r
+  //    copied String Packages from other Package List.\r
+  // 3) if ((SharingStringPack == FALSE)), this Package does not provide String Package or copy String Packages from other\r
+  //    Package List.\r
   //\r
   //\r
-  // Only valid if IsPackageListWithSingleStringPack is TRUE.\r
-  // UEFI Package List Head Pointer, pointing to a allocated buffer containing the package\r
+  // When a Hii->NewString() is called for this FwHiiHandle and SharingStringPack is TRUE, then all Package List that sharing\r
+  // the same TagGuid will update or create String in there respective String Packages. If SharingStringPack is FALSE, then\r
+  // only the String from String Packages in this Package List will be updated or created.\r
   //\r
-  EFI_HII_PACKAGE_LIST_HEADER *UefiStringPackageListHeader; //Only valid if IsStringPack is TRUE.\r
-                                                            //This UEFI Package list only consists of a list of string packages.\r
+  BOOLEAN                   SharingStringPack;\r
 \r
-  EFI_GUID                   TagGuid;\r
   //\r
-  // TRUE if the package list identified by UefiHiiHandle imports String Packages from \r
-  // other package list with IsPackageListWithOnlyStringPackages is TRUE.\r
-  //\r
-  BOOLEAN                    DoesPackageListImportStringPackages;\r
-  \r
-} HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY;\r
+  // The HII 0.92 version of HII data implementation in EDK 1.03 and 1.04 make an the following assumption\r
+  // in both HII Database implementation and all modules that registering packages:\r
+  // If a Package List has only IFR package and no String Package, the IFR package will reference \r
+  // String in another Package List registered with the HII database with the same EFI_HII_PACKAGES.GuidId.\r
+  // TagGuid is the used to record this GuidId.\r
+  EFI_GUID                   TagGuid;\r
 \r
-#define HII_TRHUNK_BUFFER_STORAGE_KEY_SIGNATURE              EFI_SIGNATURE_32 ('H', 'T', 's', 'k')\r
-#define HII_TRHUNK_BUFFER_STORAGE_KEY_FROM_LIST_ENTRY(Record) CR(Record, HII_TRHUNK_BUFFER_STORAGE_KEY, List, HII_TRHUNK_BUFFER_STORAGE_KEY_SIGNATURE)\r
+  UINT8                      *NvMapOverride;\r
+\r
+  FORM_BROWSER_FORMSET       *FormSet;\r
+\r
+} HII_THUNK_CONTEXT;\r
+\r
+\r
+\r
+#define BUFFER_STORAGE_ENTRY_SIGNATURE              SIGNATURE_32 ('H', 'T', 's', 'k')\r
+#define BUFFER_STORAGE_ENTRY_FROM_LINK(Record) CR(Record, BUFFER_STORAGE_ENTRY, Link, BUFFER_STORAGE_ENTRY_SIGNATURE)\r
 typedef struct {\r
-  LIST_ENTRY List;\r
+  LIST_ENTRY Link;\r
   UINT32     Signature;\r
   EFI_GUID   Guid;\r
   CHAR16     *Name;\r
   UINTN      Size;\r
   UINT16     VarStoreId;\r
-} HII_TRHUNK_BUFFER_STORAGE_KEY;\r
+} BUFFER_STORAGE_ENTRY;\r
+\r
+\r
 \r
-#define HII_TRHUNK_CONFIG_ACCESS_PROTOCOL_INSTANCE_SIGNATURE            EFI_SIGNATURE_32 ('H', 'T', 'c', 'a')\r
-#define HII_TRHUNK_CONFIG_ACCESS_PROTOCOL_INSTANCE_FROM_PROTOCOL(Record) CR(Record, HII_TRHUNK_CONFIG_ACCESS_PROTOCOL_INSTANCE, ConfigAccessProtocol, HII_TRHUNK_CONFIG_ACCESS_PROTOCOL_INSTANCE_SIGNATURE)\r
+#define CONFIG_ACCESS_PRIVATE_SIGNATURE            SIGNATURE_32 ('H', 'T', 'c', 'a')\r
+#define CONFIG_ACCESS_PRIVATE_FROM_PROTOCOL(Record) CR(Record, CONFIG_ACCESS_PRIVATE, ConfigAccessProtocol, CONFIG_ACCESS_PRIVATE_SIGNATURE)\r
 typedef struct {\r
   UINT32                         Signature;\r
   EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccessProtocol;\r
-  EFI_FORM_CALLBACK_PROTOCOL     *FrameworkFormCallbackProtocol;\r
-  LIST_ENTRY                     ConfigAccessBufferStorageListHead;\r
-} HII_TRHUNK_CONFIG_ACCESS_PROTOCOL_INSTANCE;\r
+  //\r
+  // Framework's callback\r
+  //\r
+  EFI_FORM_CALLBACK_PROTOCOL     *FormCallbackProtocol;\r
+\r
+  HII_THUNK_CONTEXT              *ThunkContext;\r
+} CONFIG_ACCESS_PRIVATE;\r
+\r
+\r
+\r
+#define EFI_FORMBROWSER_THUNK_PRIVATE_DATA_SIGNATURE            SIGNATURE_32 ('F', 'B', 'T', 'd')\r
+#define EFI_FORMBROWSER_THUNK_PRIVATE_DATA_FROM_THIS(Record)   CR(Record, EFI_FORMBROWSER_THUNK_PRIVATE_DATA, FormBrowser, EFI_FORMBROWSER_THUNK_PRIVATE_DATA_SIGNATURE)\r
+typedef struct {\r
+  UINTN                     Signature;\r
+  EFI_HANDLE                Handle;\r
+  HII_THUNK_PRIVATE_DATA    *ThunkPrivate;\r
+  EFI_FORM_BROWSER_PROTOCOL FormBrowser;\r
+} EFI_FORMBROWSER_THUNK_PRIVATE_DATA;\r
+\r
 \r
 //\r
 // Extern Variables\r
 //\r
-extern CONST EFI_HII_DATABASE_PROTOCOL            *mUefiHiiDatabaseProtocol;\r
-extern CONST EFI_HII_FONT_PROTOCOL                *mUefiHiiFontProtocol;\r
-extern CONST EFI_HII_IMAGE_PROTOCOL               *mUefiHiiImageProtocol;\r
-extern CONST EFI_HII_STRING_PROTOCOL              *mUefiStringProtocol;\r
-extern CONST EFI_HII_CONFIG_ROUTING_PROTOCOL      *mUefiConfigRoutingProtocol;\r
+extern CONST EFI_HII_DATABASE_PROTOCOL            *mHiiDatabase;\r
+extern CONST EFI_HII_IMAGE_PROTOCOL               *mHiiImageProtocol;\r
+extern CONST EFI_HII_STRING_PROTOCOL              *mHiiStringProtocol;\r
+extern CONST EFI_HII_FONT_PROTOCOL                *mHiiFontProtocol;\r
+extern CONST EFI_HII_CONFIG_ROUTING_PROTOCOL      *mHiiConfigRoutingProtocol;\r
+extern CONST EFI_FORM_BROWSER2_PROTOCOL           *mFormBrowser2Protocol;\r
 \r
-//\r
-// Prototypes\r
-//\r
+extern HII_THUNK_PRIVATE_DATA                     *mHiiThunkPrivateData;\r
+\r
+extern BOOLEAN                                    mInFrameworkUpdatePakcage;\r
 \r
-//\r
-// Public Interface Prototypes\r
-//\r
-EFI_STATUS\r
-EFIAPI\r
-InitializeHiiDatabase (\r
-  IN EFI_HANDLE             ImageHandle,\r
-  IN EFI_SYSTEM_TABLE       *SystemTable\r
-  )\r
-;\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 HiiNewPack (\r
-  IN  EFI_HII_PROTOCOL      *This,\r
-  IN  EFI_HII_PACKAGES      *PackageList,\r
-  OUT FRAMEWORK_EFI_HII_HANDLE         *Handle\r
-  )\r
-;\r
+  IN  EFI_HII_PROTOCOL              *This,\r
+  IN  EFI_HII_PACKAGES              *PackageList,\r
+  OUT FRAMEWORK_EFI_HII_HANDLE      *Handle\r
+  );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 HiiRemovePack (\r
-  IN EFI_HII_PROTOCOL    *This,\r
+  IN EFI_HII_PROTOCOL               *This,\r
   IN FRAMEWORK_EFI_HII_HANDLE       Handle\r
-  )\r
-;\r
+  );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 HiiFindHandles (\r
-  IN     EFI_HII_PROTOCOL    *This,\r
-  IN OUT UINT16              *HandleBufferLength,\r
-  OUT    FRAMEWORK_EFI_HII_HANDLE       *Handle\r
-  )\r
-;\r
+  IN     EFI_HII_PROTOCOL           *This,\r
+  IN OUT UINT16                     *HandleBufferLength,\r
+  OUT    FRAMEWORK_EFI_HII_HANDLE   *Handle\r
+  );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 HiiExportDatabase (\r
-  IN     EFI_HII_PROTOCOL *This,\r
-  IN     FRAMEWORK_EFI_HII_HANDLE    Handle,\r
-  IN OUT UINTN            *BufferSize,\r
-  OUT    VOID             *Buffer\r
-  )\r
-;\r
+  IN     EFI_HII_PROTOCOL           *This,\r
+  IN     FRAMEWORK_EFI_HII_HANDLE   Handle,\r
+  IN OUT UINTN                      *BufferSize,\r
+  OUT    VOID                       *Buffer\r
+  );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 HiiGetGlyph (\r
-  IN     EFI_HII_PROTOCOL    *This,\r
-  IN     CHAR16              *Source,\r
-  IN OUT UINT16              *Index,\r
-  OUT    UINT8               **GlyphBuffer,\r
-  OUT    UINT16              *BitWidth,\r
-  IN OUT UINT32              *InternalStatus\r
-  )\r
-;\r
+  IN     EFI_HII_PROTOCOL           *This,\r
+  IN     CHAR16                     *Source,\r
+  IN OUT UINT16                     *Index,\r
+  OUT    UINT8                      **GlyphBuffer,\r
+  OUT    UINT16                     *BitWidth,\r
+  IN OUT UINT32                     *InternalStatus\r
+  );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
@@ -213,8 +275,7 @@ HiiGlyphToBlt (
   IN     UINTN                         Width,\r
   IN     UINTN                         Height,\r
   IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer\r
-  )\r
-;\r
+  );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
@@ -224,118 +285,176 @@ HiiNewString (
   IN     FRAMEWORK_EFI_HII_HANDLE Handle,\r
   IN OUT STRING_REF              *Reference,\r
   IN     CHAR16                  *NewString\r
-  )\r
-;\r
+  );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 HiiGetString (\r
-  IN     EFI_HII_PROTOCOL    *This,\r
-  IN     FRAMEWORK_EFI_HII_HANDLE       Handle,\r
-  IN     STRING_REF          Token,\r
-  IN     BOOLEAN             Raw,\r
-  IN     CHAR16              *LanguageString,\r
-  IN OUT UINTN               *BufferLength,\r
-  OUT    EFI_STRING          StringBuffer\r
-  )\r
-;\r
+  IN     EFI_HII_PROTOCOL           *This,\r
+  IN     FRAMEWORK_EFI_HII_HANDLE   Handle,\r
+  IN     STRING_REF                 Token,\r
+  IN     BOOLEAN                    Raw,\r
+  IN     CHAR16                     *LanguageString,\r
+  IN OUT UINTN                      *BufferLength,\r
+  OUT    EFI_STRING                 StringBuffer\r
+  );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 HiiResetStrings (\r
-  IN     EFI_HII_PROTOCOL    *This,\r
-  IN     FRAMEWORK_EFI_HII_HANDLE       Handle\r
-  )\r
-;\r
+  IN     EFI_HII_PROTOCOL           *This,\r
+  IN     FRAMEWORK_EFI_HII_HANDLE   Handle\r
+  );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 HiiTestString (\r
-  IN     EFI_HII_PROTOCOL    *This,\r
-  IN     CHAR16              *StringToTest,\r
-  IN OUT UINT32              *FirstMissing,\r
-  OUT    UINT32              *GlyphBufferSize\r
-  )\r
-;\r
+  IN     EFI_HII_PROTOCOL           *This,\r
+  IN     CHAR16                     *StringToTest,\r
+  IN OUT UINT32                     *FirstMissing,\r
+  OUT    UINT32                     *GlyphBufferSize\r
+  );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 HiiGetPrimaryLanguages (\r
-  IN  EFI_HII_PROTOCOL      *This,\r
-  IN  FRAMEWORK_EFI_HII_HANDLE         Handle,\r
-  OUT EFI_STRING            *LanguageString\r
-  )\r
-;\r
+  IN  EFI_HII_PROTOCOL              *This,\r
+  IN  FRAMEWORK_EFI_HII_HANDLE      Handle,\r
+  OUT EFI_STRING                    *LanguageString\r
+  );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 HiiGetSecondaryLanguages (\r
-  IN  EFI_HII_PROTOCOL      *This,\r
-  IN  FRAMEWORK_EFI_HII_HANDLE         Handle,\r
-  IN  CHAR16                *PrimaryLanguage,\r
-  OUT EFI_STRING            *LanguageString\r
-  )\r
-;\r
+  IN  EFI_HII_PROTOCOL                *This,\r
+  IN  FRAMEWORK_EFI_HII_HANDLE        Handle,\r
+  IN  CHAR16                          *PrimaryLanguage,\r
+  OUT EFI_STRING                      *LanguageString\r
+  );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 HiiGetLine (\r
-  IN     EFI_HII_PROTOCOL    *This,\r
+  IN     EFI_HII_PROTOCOL               *This,\r
   IN     FRAMEWORK_EFI_HII_HANDLE       Handle,\r
-  IN     STRING_REF          Token,\r
-  IN OUT UINT16              *Index,\r
-  IN     UINT16              LineWidth,\r
-  IN     CHAR16              *LanguageString,\r
-  IN OUT UINT16              *BufferLength,\r
-  OUT    EFI_STRING          StringBuffer\r
-  )\r
-;\r
+  IN     STRING_REF                     Token,\r
+  IN OUT UINT16                         *Index,\r
+  IN     UINT16                         LineWidth,\r
+  IN     CHAR16                         *LanguageString,\r
+  IN OUT UINT16                         *BufferLength,\r
+  OUT    EFI_STRING                     StringBuffer\r
+  );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 HiiGetForms (\r
-  IN     EFI_HII_PROTOCOL    *This,\r
+  IN     EFI_HII_PROTOCOL               *This,\r
   IN     FRAMEWORK_EFI_HII_HANDLE       Handle,\r
-  IN     EFI_FORM_ID         FormId,\r
-  IN OUT UINTN               *BufferLength,\r
-  OUT    UINT8               *Buffer\r
-  )\r
-;\r
+  IN     EFI_FORM_ID                    FormId,\r
+  IN OUT UINTN                          *BufferLength,\r
+  OUT    UINT8                          *Buffer\r
+  );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 HiiGetDefaultImage (\r
-  IN     EFI_HII_PROTOCOL           *This,\r
-  IN     FRAMEWORK_EFI_HII_HANDLE   Handle,\r
-  IN     UINTN                      DefaultMask,\r
-  OUT    EFI_HII_VARIABLE_PACK_LIST **VariablePackList\r
-  )\r
-;\r
+  IN     EFI_HII_PROTOCOL               *This,\r
+  IN     FRAMEWORK_EFI_HII_HANDLE       Handle,\r
+  IN     UINTN                          DefaultMask,\r
+  OUT    EFI_HII_VARIABLE_PACK_LIST     **VariablePackList\r
+  );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 HiiUpdateForm (\r
-  IN EFI_HII_PROTOCOL       *This,\r
-  IN FRAMEWORK_EFI_HII_HANDLE          Handle,\r
-  IN EFI_FORM_LABEL         Label,\r
-  IN BOOLEAN                AddData,\r
-  IN EFI_HII_UPDATE_DATA    *Data\r
-  )\r
-;\r
+  IN EFI_HII_PROTOCOL                   *This,\r
+  IN FRAMEWORK_EFI_HII_HANDLE           Handle,\r
+  IN EFI_FORM_LABEL                     Label,\r
+  IN BOOLEAN                            AddData,\r
+  IN FRAMEWORK_EFI_HII_UPDATE_DATA      *Data\r
+  );\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 HiiGetKeyboardLayout (\r
-  IN     EFI_HII_PROTOCOL    *This,\r
-  OUT    UINT16              *DescriptorCount,\r
-  OUT    FRAMEWORK_EFI_KEY_DESCRIPTOR  *Descriptor\r
+  IN     EFI_HII_PROTOCOL               *This,\r
+  OUT    UINT16                         *DescriptorCount,\r
+  OUT    FRAMEWORK_EFI_KEY_DESCRIPTOR   *Descriptor\r
+  );\r
+\r
+EFI_STATUS\r
+EFIAPI \r
+ThunkSendForm (\r
+  IN  EFI_FORM_BROWSER_PROTOCOL       *This,\r
+  IN  BOOLEAN                         UseDatabase,\r
+  IN  FRAMEWORK_EFI_HII_HANDLE        *Handle,\r
+  IN  UINTN                           HandleCount,\r
+  IN  FRAMEWORK_EFI_IFR_PACKET        *Packet, OPTIONAL\r
+  IN  EFI_HANDLE                      CallbackHandle, OPTIONAL\r
+  IN  UINT8                           *NvMapOverride, OPTIONAL\r
+  IN  FRAMEWORK_EFI_SCREEN_DESCRIPTOR *ScreenDimensions, OPTIONAL\r
+  OUT BOOLEAN                         *ResetRequired OPTIONAL\r
+  );\r
+\r
+EFI_STATUS\r
+EFIAPI \r
+ThunkCreatePopUp (\r
+  IN  UINTN                           NumberOfLines,\r
+  IN  BOOLEAN                         HotKey,\r
+  IN  UINTN                           MaximumStringSize,\r
+  OUT CHAR16                          *StringBuffer,\r
+  OUT EFI_INPUT_KEY                   *KeyValue,\r
+  IN  CHAR16                          *String,\r
+  ...\r
+  );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+RemovePackNotify (\r
+  IN UINT8                              PackageType,\r
+  IN CONST EFI_GUID                     *PackageGuid,\r
+  IN CONST EFI_HII_PACKAGE_HEADER       *Package,\r
+  IN EFI_HII_HANDLE                     Handle,\r
+  IN EFI_HII_DATABASE_NOTIFY_TYPE       NotifyType\r
+  );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+NewOrAddPackNotify (\r
+  IN UINT8                              PackageType,\r
+  IN CONST EFI_GUID                     *PackageGuid,\r
+  IN CONST EFI_HII_PACKAGE_HEADER       *Package,\r
+  IN EFI_HII_HANDLE                     Handle,\r
+  IN EFI_HII_DATABASE_NOTIFY_TYPE       NotifyType\r
+  );\r
+\r
+/**\r
+  Create a EFI_HII_UPDATE_DATA structure used to call IfrLibUpdateForm.\r
+\r
+  @param ThunkContext   The HII Thunk Context.\r
+  @param FwUpdateData   The Framework Update Data.\r
+  @param UefiUpdateData The UEFI Update Data.\r
+\r
+  @retval EFI_SUCCESS       The UEFI Update Data is created successfully.\r
+  @retval EFI_UNSUPPORTED   There is unsupported opcode in FwUpdateData.\r
+  @retval EFI_OUT_OF_RESOURCES There is not enough resource.\r
+**/\r
+EFI_STATUS\r
+FwUpdateDataToUefiUpdateData (\r
+  IN       HII_THUNK_CONTEXT                *ThunkContext,\r
+  IN CONST FRAMEWORK_EFI_HII_UPDATE_DATA    *FwUpdateData,\r
+  OUT      EFI_HII_UPDATE_DATA              **UefiUpdateData\r
   )\r
 ;\r
 \r
-EFI_STATUS\r
-HiiCompareLanguage (\r
-  IN  CHAR16                *LanguageStringLocation,\r
-  IN  CHAR16                *Language\r
+/** \r
+\r
+  Initialize string packages in HII database.\r
+\r
+**/\r
+VOID\r
+InitSetBrowserStrings (\r
+  VOID\r
   )\r
 ;\r
 \r