/**@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
#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
#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
#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
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
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