]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Remove UefiHiiLib & UefiIfrSupportLib. They have been moved to MdeModulePkg.
authorqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 13 Nov 2008 09:07:30 +0000 (09:07 +0000)
committerqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 13 Nov 2008 09:07:30 +0000 (09:07 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6518 6f19259b-4bc3-4df7-8a09-765794883524

MdePkg/Library/UefiHiiLib/HiiLanguage.c [deleted file]
MdePkg/Library/UefiHiiLib/HiiLib.c [deleted file]
MdePkg/Library/UefiHiiLib/HiiString.c [deleted file]
MdePkg/Library/UefiHiiLib/InternalHiiLib.h [deleted file]
MdePkg/Library/UefiHiiLib/UefiHiiLib.inf [deleted file]
MdePkg/Library/UefiIfrSupportLib/UefiIfrForm.c [deleted file]
MdePkg/Library/UefiIfrSupportLib/UefiIfrLibraryInternal.h [deleted file]
MdePkg/Library/UefiIfrSupportLib/UefiIfrOpCodeCreation.c [deleted file]
MdePkg/Library/UefiIfrSupportLib/UefiIfrSupportLib.inf [deleted file]

diff --git a/MdePkg/Library/UefiHiiLib/HiiLanguage.c b/MdePkg/Library/UefiHiiLib/HiiLanguage.c
deleted file mode 100644 (file)
index 147e5a3..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-/** @file\r
-  Language related HII Library implementation.\r
-\r
-  Copyright (c) 2006 - 2008, Intel Corporation<BR>\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
-**/\r
-\r
-\r
-#include "InternalHiiLib.h"\r
-\r
-/**\r
-  Get next language from language code list (with separator ';').\r
-\r
-  If LangCode is NULL, then ASSERT.\r
-  If Lang is NULL, then ASSERT.\r
-\r
-  @param  LangCode    On input: point to first language in the list. On\r
-                                 output: point to next language in the list, or\r
-                                 NULL if no more language in the list.\r
-  @param  Lang           The first language in the list.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-HiiLibGetNextLanguage (\r
-  IN OUT CHAR8      **LangCode,\r
-  OUT CHAR8         *Lang\r
-  )\r
-{\r
-  UINTN  Index;\r
-  CHAR8  *StringPtr;\r
-\r
-  ASSERT (LangCode != NULL);\r
-  ASSERT (*LangCode != NULL);\r
-  ASSERT (Lang != NULL);\r
-\r
-  Index = 0;\r
-  StringPtr = *LangCode;\r
-  while (StringPtr[Index] != 0 && StringPtr[Index] != ';') {\r
-    Index++;\r
-  }\r
-\r
-  CopyMem (Lang, StringPtr, Index);\r
-  Lang[Index] = 0;\r
-\r
-  if (StringPtr[Index] == ';') {\r
-    Index++;\r
-  }\r
-  *LangCode = StringPtr + Index;\r
-}\r
-\r
-\r
-/**\r
-  This function returns the list of supported languages, in the format specified\r
-  in UEFI specification Appendix M.\r
-\r
-  If HiiHandle is not a valid Handle in the default HII database, then ASSERT.\r
-\r
-  @param  HiiHandle              The HII package list handle.\r
-\r
-  @retval   !NULL  The supported languages.\r
-  @retval   NULL    If Supported Languages can not be retrived.\r
-\r
-**/\r
-CHAR8 *\r
-EFIAPI\r
-HiiLibGetSupportedLanguages (\r
-  IN EFI_HII_HANDLE           HiiHandle\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-  UINTN       BufferSize;\r
-  CHAR8       *LanguageString;\r
-\r
-  ASSERT (IsHiiHandleRegistered (HiiHandle));\r
-  //\r
-  // Collect current supported Languages for given HII handle\r
-  // First try allocate 4K buffer to store the current supported languages.\r
-  //\r
-  BufferSize = 0x1000;\r
-  LanguageString = AllocateZeroPool (BufferSize);\r
-  if (LanguageString == NULL) {\r
-    return NULL;\r
-  }\r
-\r
-  Status = mHiiStringProt->GetLanguages (mHiiStringProt, HiiHandle, LanguageString, &BufferSize);\r
-  \r
-  if (Status == EFI_BUFFER_TOO_SMALL) {\r
-    FreePool (LanguageString);\r
-    LanguageString = AllocateZeroPool (BufferSize);\r
-    if (LanguageString == NULL) {\r
-      return NULL;\r
-    }\r
-\r
-    Status = mHiiStringProt->GetLanguages (mHiiStringProt, HiiHandle, LanguageString, &BufferSize);\r
-  }\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    LanguageString = NULL;\r
-  }\r
-\r
-  return LanguageString;\r
-}\r
-\r
-\r
-/**\r
-  This function returns the number of supported languages on HiiHandle.\r
-\r
-  If HiiHandle is not a valid Handle in the default HII database, then ASSERT.\r
-  If not enough resource to complete the operation, then ASSERT.\r
-\r
-  @param  HiiHandle              The HII package list handle.\r
-\r
-  @return The  number of supported languages.\r
-\r
-**/\r
-UINT16\r
-EFIAPI\r
-HiiLibGetSupportedLanguageNumber (\r
-  IN EFI_HII_HANDLE           HiiHandle\r
-  )\r
-{\r
-  CHAR8   *Languages;\r
-  CHAR8   *LanguageString;\r
-  UINT16  LangNumber;\r
-  CHAR8   Lang[RFC_3066_ENTRY_SIZE];\r
-\r
-  Languages = HiiLibGetSupportedLanguages (HiiHandle);\r
-  if (Languages == NULL) {\r
-    return 0;\r
-  }\r
-\r
-  LangNumber = 0;\r
-  LanguageString = Languages;\r
-  while (*LanguageString != 0) {\r
-    HiiLibGetNextLanguage (&LanguageString, Lang);\r
-    LangNumber++;\r
-  }\r
-  FreePool (Languages);\r
-\r
-  return LangNumber;\r
-}\r
-\r
-/**\r
-  This function returns the list of supported 2nd languages, in the format specified\r
-  in UEFI specification Appendix M.\r
-\r
-  If HiiHandle is not a valid Handle in the default HII database, then ASSERT.\r
-  If not enough resource to complete the operation, then ASSERT.\r
-\r
-  @param  HiiHandle              The HII package list handle.\r
-  @param  FirstLanguage          Pointer to language name buffer.\r
-  \r
-  @return The supported languages.\r
-\r
-**/\r
-CHAR8 *\r
-EFIAPI\r
-HiiLibGetSupportedSecondaryLanguages (\r
-  IN EFI_HII_HANDLE           HiiHandle,\r
-  IN CONST CHAR8              *FirstLanguage\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-  UINTN       BufferSize;\r
-  CHAR8       *LanguageString;\r
-\r
-  ASSERT (HiiHandle != NULL);\r
-  ASSERT (IsHiiHandleRegistered (HiiHandle));\r
-  //\r
-  // Collect current supported 2nd Languages for given HII handle\r
-  // First try allocate 4K buffer to store the current supported 2nd languages.\r
-  //\r
-  BufferSize = 0x1000;\r
-  LanguageString = AllocateZeroPool (BufferSize);\r
-  if (LanguageString == NULL) {\r
-    return NULL;\r
-  }\r
-\r
-  Status = mHiiStringProt->GetSecondaryLanguages (mHiiStringProt, HiiHandle, FirstLanguage, LanguageString, &BufferSize);\r
-  \r
-  if (Status == EFI_BUFFER_TOO_SMALL) {\r
-    FreePool (LanguageString);\r
-    LanguageString = AllocateZeroPool (BufferSize);\r
-    if (LanguageString == NULL) {\r
-      return NULL;\r
-    }\r
-\r
-    Status = mHiiStringProt->GetSecondaryLanguages (mHiiStringProt, HiiHandle, FirstLanguage, LanguageString, &BufferSize);\r
-  }\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    LanguageString = NULL;\r
-  }\r
-\r
-  return LanguageString;\r
-}\r
-\r
-\r
diff --git a/MdePkg/Library/UefiHiiLib/HiiLib.c b/MdePkg/Library/UefiHiiLib/HiiLib.c
deleted file mode 100644 (file)
index 975a064..0000000
+++ /dev/null
@@ -1,698 +0,0 @@
-/** @file\r
-  HII Library implementation that uses DXE protocols and services.\r
-\r
-  Copyright (c) 2006 - 2008, Intel Corporation<BR>\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
-**/\r
-\r
-#include "InternalHiiLib.h"\r
-\r
-CONST EFI_HII_DATABASE_PROTOCOL   *mHiiDatabaseProt = NULL;\r
-CONST EFI_HII_STRING_PROTOCOL     *mHiiStringProt = NULL;\r
-\r
-/**\r
-  This function locate Hii relative protocols for later usage.\r
-    \r
-  The constructor function caches the protocol pointer of HII Database Protocol\r
-  and Hii String Protocol.\r
-  \r
-  It will ASSERT() if either of the protocol can't be located.\r
-\r
-  @param  ImageHandle   The firmware allocated handle for the EFI image.\r
-  @param  SystemTable   A pointer to the EFI System Table.\r
-\r
-  @retval EFI_SUCCESS   The constructor always returns EFI_SUCCESS.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-HiiLibConstructor (\r
-  IN EFI_HANDLE        ImageHandle,\r
-  IN EFI_SYSTEM_TABLE  *SystemTable\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-\r
-  Status = gBS->LocateProtocol (&gEfiHiiDatabaseProtocolGuid, NULL, (VOID **) &mHiiDatabaseProt);\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  Status = gBS->LocateProtocol (&gEfiHiiStringProtocolGuid, NULL, (VOID **) &mHiiStringProt);\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-\r
-\r
-/**\r
-  This funciton build the package list based on the package number,\r
-  the GUID of the package list and the list of pointer which point to\r
-  package header that defined by UEFI VFR compiler and StringGather\r
-  tool.\r
-\r
-  #pragma pack (push, 1)\r
-  typedef struct {\r
-    UINT32                  BinaryLength;\r
-    EFI_HII_PACKAGE_HEADER  PackageHeader;\r
-  } EDKII_AUTOGEN_PACKAGES_HEADER;\r
-  #pragma pack (pop)\r
-\r
-  If there is not enough resource for the new package list,\r
-  the function will ASSERT.\r
-\r
-  @param NumberOfPackages The number of packages be \r
-  @param GuidId          The GUID for the package list to be generated.\r
-  @param Marker          The variable argument list. Each entry represent a specific package header that is\r
-                         generated by VFR compiler and StrGather tool. The first 4 bytes is a UINT32 value\r
-                         that indicate the overall length of the package.\r
-\r
-  @return The pointer to the package list header.\r
-\r
-**/\r
-EFI_HII_PACKAGE_LIST_HEADER *\r
-InternalHiiLibPreparePackages (\r
-  IN UINTN           NumberOfPackages,\r
-  IN CONST EFI_GUID  *GuidId,\r
-  IN VA_LIST         Marker\r
-  )\r
-{\r
-  EFI_HII_PACKAGE_LIST_HEADER *PackageListHeader;\r
-  UINT8                       *PackageListData;\r
-  UINT32                      PackageListLength;\r
-  UINT32                      PackageLength;\r
-  EFI_HII_PACKAGE_HEADER      PackageHeader;\r
-  UINT8                       *PackageArray;\r
-  UINTN                       Index;\r
-  VA_LIST                     MarkerBackup;\r
-\r
-  PackageListLength = sizeof (EFI_HII_PACKAGE_LIST_HEADER);\r
-\r
-  MarkerBackup = Marker;\r
-\r
-  //\r
-  // Count the lenth of the final package list.\r
-  //\r
-  for (Index = 0; Index < NumberOfPackages; Index++) {\r
-    CopyMem (&PackageLength, VA_ARG (Marker, VOID *), sizeof (UINT32));\r
-    //\r
-    // Do not count the BinaryLength field.\r
-    //\r
-    PackageListLength += (PackageLength - sizeof (UINT32));\r
-  }\r
-\r
-  //\r
-  // Include the lenght of EFI_HII_PACKAGE_END\r
-  //\r
-  PackageListLength += sizeof (EFI_HII_PACKAGE_HEADER);\r
-  PackageListHeader = AllocateZeroPool (PackageListLength);\r
-  ASSERT (PackageListHeader != NULL);\r
-  \r
-  CopyGuid (&PackageListHeader->PackageListGuid, GuidId);\r
-  PackageListHeader->PackageLength = PackageListLength;\r
-\r
-  PackageListData = ((UINT8 *) PackageListHeader) + sizeof (EFI_HII_PACKAGE_LIST_HEADER);\r
-\r
-  Marker = MarkerBackup;\r
-  //\r
-  // Prepare the final package list.\r
-  //\r
-  for (Index = 0; Index < NumberOfPackages; Index++) {\r
-    PackageArray = (UINT8 *) VA_ARG (Marker, VOID *);\r
-    //\r
-    // CopyMem is used for UINT32 to cover the unaligned address access.\r
-    //\r
-    CopyMem (&PackageLength, PackageArray, sizeof (UINT32));\r
-    PackageLength  -= sizeof (UINT32);\r
-    PackageArray += sizeof (UINT32);\r
-    CopyMem (PackageListData, PackageArray, PackageLength);\r
-    PackageListData += PackageLength;\r
-  }\r
-\r
-  //\r
-  // Append EFI_HII_PACKAGE_END\r
-  //\r
-  PackageHeader.Type = EFI_HII_PACKAGE_END;\r
-  PackageHeader.Length = sizeof (EFI_HII_PACKAGE_HEADER);\r
-  CopyMem (PackageListData, &PackageHeader, PackageHeader.Length);\r
-\r
-  return PackageListHeader;\r
-}\r
-\r
-/**\r
-  Assemble EFI_HII_PACKAGE_LIST according to the passed in packages.\r
-\r
-  If GuidId is NULL, then ASSERT.\r
-  If not enough resource to complete the operation, then ASSERT.\r
-\r
-  @param  NumberOfPackages       Number of packages.\r
-  @param  GuidId                 Package GUID.\r
-  @param  ...                    Variable argument list for packages to be assembled.\r
-\r
-  @return Pointer of EFI_HII_PACKAGE_LIST_HEADER.\r
-\r
-**/\r
-EFI_HII_PACKAGE_LIST_HEADER *\r
-EFIAPI\r
-HiiLibPreparePackageList (\r
-  IN UINTN                    NumberOfPackages,\r
-  IN CONST EFI_GUID           *GuidId,\r
-  ...\r
-  )\r
-{\r
-  EFI_HII_PACKAGE_LIST_HEADER *PackageListHeader;\r
-  VA_LIST                     Marker;\r
-\r
-  ASSERT (GuidId != NULL);\r
-\r
-  VA_START (Marker, GuidId);\r
-  PackageListHeader = InternalHiiLibPreparePackages (NumberOfPackages, GuidId, Marker);\r
-  VA_END (Marker);\r
-\r
-  return PackageListHeader;\r
-}\r
-\r
-\r
-/**\r
-  This function allocates pool for an EFI_HII_PACKAGE_LIST structure\r
-  with additional space that is big enough to host all packages described by the variable \r
-  argument list of package pointers.  The allocated structure is initialized using NumberOfPackages, \r
-  GuidId,  and the variable length argument list of package pointers.\r
-\r
-  Then, EFI_HII_PACKAGE_LIST will be register to the default System HII Database. The\r
-  Handle to the newly registered Package List is returned throught HiiHandle.\r
-\r
-  If HiiHandle is NULL, then ASSERT.\r
-\r
-  @param  NumberOfPackages    The number of HII packages to register.\r
-  @param  GuidId              Package List GUID ID.\r
-  @param  DriverHandle        Optional. If not NULL, the DriverHandle on which an instance of DEVICE_PATH_PROTOCOL is installed.\r
-                              This DriverHandle uniquely defines the device that the added packages are associated with.\r
-  @param  HiiHandle           On output, the HiiHandle is update with the handle which can be used to retrieve the Package \r
-                              List later. If the functions failed to add the package to the default HII database, this value will\r
-                              be set to NULL.\r
-  @param  ...                 The variable argument list describing all HII Package.\r
-\r
-  @return  EFI_SUCCESS         If the packages are successfully added to the default HII database.\r
-  @return  EFI_OUT_OF_RESOURCE Not enough resource to complete the operation.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-HiiLibAddPackages (\r
-  IN       UINTN               NumberOfPackages,\r
-  IN CONST EFI_GUID            *GuidId,\r
-  IN       EFI_HANDLE          DriverHandle, OPTIONAL\r
-  OUT      EFI_HII_HANDLE      *HiiHandle,\r
-  ...\r
-  )\r
-{\r
-  VA_LIST                   Args;\r
-  EFI_HII_PACKAGE_LIST_HEADER *PackageListHeader;\r
-  EFI_STATUS                Status;\r
-\r
-  ASSERT (HiiHandle != NULL);\r
-\r
-  VA_START (Args, HiiHandle);\r
-  PackageListHeader = InternalHiiLibPreparePackages (NumberOfPackages, GuidId, Args);\r
-\r
-  Status      = mHiiDatabaseProt->NewPackageList (mHiiDatabaseProt, PackageListHeader, DriverHandle, HiiHandle);\r
-  if (HiiHandle != NULL) {\r
-    if (EFI_ERROR (Status)) {\r
-      *HiiHandle = NULL;\r
-    }\r
-  }\r
-\r
-  FreePool (PackageListHeader);\r
-  VA_END (Args);\r
-  \r
-  return Status;\r
-}\r
-\r
-/**\r
-  Removes a package list from the default HII database.\r
-\r
-  If HiiHandle is NULL, then ASSERT.\r
-  If HiiHandle is not a valid EFI_HII_HANDLE in the default HII database, then ASSERT.\r
-\r
-  @param  HiiHandle                The handle that was previously registered to the data base that is requested for removal.\r
-                                             List later.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-HiiLibRemovePackages (\r
-  IN      EFI_HII_HANDLE      HiiHandle\r
-  )\r
-{\r
-  EFI_STATUS Status;\r
-  ASSERT (IsHiiHandleRegistered (HiiHandle));\r
-\r
-  Status = mHiiDatabaseProt->RemovePackageList (mHiiDatabaseProt, HiiHandle);\r
-  ASSERT_EFI_ERROR (Status);\r
-}\r
-\r
-\r
-/**\r
-  Determines the handles that are currently active in the database.\r
-  It's the caller's responsibility to free handle buffer.\r
-\r
-  If HandleBufferLength is NULL, then ASSERT.\r
-  If HiiHandleBuffer is NULL, then ASSERT.\r
-\r
-  @param  HandleBufferLength     On input, a pointer to the length of the handle\r
-                                 buffer. On output, the length of the handle buffer\r
-                                 that is required for the handles found.\r
-  @param  HiiHandleBuffer        Pointer to an array of Hii Handles returned.\r
-\r
-  @retval EFI_SUCCESS            Get an array of Hii Handles successfully.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-HiiLibGetHiiHandles (\r
-  IN OUT UINTN                     *HandleBufferLength,\r
-  OUT    EFI_HII_HANDLE            **HiiHandleBuffer\r
-  )\r
-{\r
-  UINTN       BufferLength;\r
-  EFI_STATUS  Status;\r
-\r
-  ASSERT (HandleBufferLength != NULL);\r
-  ASSERT (HiiHandleBuffer != NULL);\r
-\r
-  BufferLength = 0;\r
-\r
-  //\r
-  // Try to find the actual buffer size for HiiHandle Buffer.\r
-  //\r
-  Status = mHiiDatabaseProt->ListPackageLists (\r
-                                 mHiiDatabaseProt,\r
-                                 EFI_HII_PACKAGE_TYPE_ALL,\r
-                                 NULL,\r
-                                 &BufferLength,\r
-                                 *HiiHandleBuffer\r
-                                 );\r
-\r
-  if (Status == EFI_BUFFER_TOO_SMALL) {\r
-      *HiiHandleBuffer = AllocateZeroPool (BufferLength);\r
-      ASSERT (*HiiHandleBuffer != NULL);\r
-      Status = mHiiDatabaseProt->ListPackageLists (\r
-                                     mHiiDatabaseProt,\r
-                                     EFI_HII_PACKAGE_TYPE_ALL,\r
-                                     NULL,\r
-                                     &BufferLength,\r
-                                     *HiiHandleBuffer\r
-                                     );\r
-      //\r
-      // we should not fail here.\r
-      //\r
-      ASSERT_EFI_ERROR (Status);\r
-  }\r
-\r
-  *HandleBufferLength = BufferLength;\r
-\r
-  return Status;\r
-}\r
-\r
-/**\r
-  Extract Hii package list GUID for given HII handle.\r
-\r
-  If HiiHandle could not be found in the default HII database, then ASSERT.\r
-  If Guid is NULL, then ASSERT.\r
-\r
-  @param  Handle              Hii handle\r
-  @param  Guid                Package list GUID\r
-\r
-  @retval EFI_SUCCESS            Successfully extract GUID from Hii database.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-HiiLibExtractGuidFromHiiHandle (\r
-  IN      EFI_HII_HANDLE      Handle,\r
-  OUT     EFI_GUID            *Guid\r
-  )\r
-{\r
-  EFI_STATUS                   Status;\r
-  UINTN                        BufferSize;\r
-  EFI_HII_PACKAGE_LIST_HEADER  *HiiPackageList;\r
-\r
-  ASSERT (Guid != NULL);\r
-  ASSERT (IsHiiHandleRegistered (Handle));\r
-\r
-  //\r
-  // Get HII PackageList\r
-  //\r
-  BufferSize = 0;\r
-  HiiPackageList = NULL;\r
-\r
-  Status = mHiiDatabaseProt->ExportPackageLists (mHiiDatabaseProt, Handle, &BufferSize, HiiPackageList);\r
-  ASSERT (Status != EFI_NOT_FOUND);\r
-  \r
-  if (Status == EFI_BUFFER_TOO_SMALL) {\r
-    HiiPackageList = AllocatePool (BufferSize);\r
-    ASSERT (HiiPackageList != NULL);\r
-\r
-    Status = mHiiDatabaseProt->ExportPackageLists (mHiiDatabaseProt, Handle, &BufferSize, HiiPackageList);\r
-  }\r
-  if (EFI_ERROR (Status)) {\r
-    FreePool (HiiPackageList);\r
-    return Status;\r
-  }\r
-\r
-  //\r
-  // Extract GUID\r
-  //\r
-  CopyGuid (Guid, &HiiPackageList->PackageListGuid);\r
-\r
-  FreePool (HiiPackageList);\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Find HII Handle in the default HII database associated with given Device Path.\r
-\r
-  If DevicePath is NULL, then ASSERT.\r
-\r
-  @param  DevicePath             Device Path associated with the HII package list\r
-                                 handle.\r
-\r
-  @retval Handle                 HII package list Handle associated with the Device\r
-                                        Path.\r
-  @retval NULL                   Hii Package list handle is not found.\r
-\r
-**/\r
-EFI_HII_HANDLE\r
-EFIAPI\r
-HiiLibDevicePathToHiiHandle (\r
-  IN EFI_DEVICE_PATH_PROTOCOL   *DevicePath\r
-  )\r
-{\r
-  EFI_STATUS                  Status;\r
-  EFI_DEVICE_PATH_PROTOCOL    *TmpDevicePath;\r
-  UINTN                       BufferSize;\r
-  UINTN                       HandleCount;\r
-  UINTN                       Index;\r
-  EFI_HANDLE                  *Handles;\r
-  EFI_HANDLE                  Handle;\r
-  UINTN                       Size;\r
-  EFI_HANDLE                  DriverHandle;\r
-  EFI_HII_HANDLE              *HiiHandles;\r
-  EFI_HII_HANDLE              HiiHandle;\r
-\r
-  ASSERT (DevicePath != NULL);\r
-\r
-  //\r
-  // Locate Device Path Protocol handle buffer\r
-  //\r
-  Status = gBS->LocateHandleBuffer (\r
-                  ByProtocol,\r
-                  &gEfiDevicePathProtocolGuid,\r
-                  NULL,\r
-                  &HandleCount,\r
-                  &Handles\r
-                  );\r
-  if (EFI_ERROR (Status)) {\r
-    return NULL;\r
-  }\r
-\r
-  //\r
-  // Search Driver Handle by Device Path\r
-  //\r
-  DriverHandle = NULL;\r
-  BufferSize = GetDevicePathSize (DevicePath);\r
-  for(Index = 0; Index < HandleCount; Index++) {\r
-    Handle = Handles[Index];\r
-    gBS->HandleProtocol (Handle, &gEfiDevicePathProtocolGuid, (VOID **) &TmpDevicePath);\r
-\r
-    //\r
-    // Check whether DevicePath match\r
-    //\r
-    Size = GetDevicePathSize (TmpDevicePath);\r
-    if ((Size == BufferSize) && CompareMem (DevicePath, TmpDevicePath, Size) == 0) {\r
-      DriverHandle = Handle;\r
-      break;\r
-    }\r
-  }\r
-  FreePool (Handles);\r
-\r
-  if (DriverHandle == NULL) {\r
-    return NULL;\r
-  }\r
-\r
-  //\r
-  // Retrieve all Hii Handles from HII database\r
-  //\r
-  BufferSize = 0x1000;\r
-  HiiHandles = AllocatePool (BufferSize);\r
-  ASSERT (HiiHandles != NULL);\r
-  Status = mHiiDatabaseProt->ListPackageLists (\r
-                          mHiiDatabaseProt,\r
-                          EFI_HII_PACKAGE_TYPE_ALL,\r
-                          NULL,\r
-                          &BufferSize,\r
-                          HiiHandles\r
-                          );\r
-  if (Status == EFI_BUFFER_TOO_SMALL) {\r
-    FreePool (HiiHandles);\r
-    HiiHandles = AllocatePool (BufferSize);\r
-    ASSERT (HiiHandles != NULL);\r
-\r
-    Status = mHiiDatabaseProt->ListPackageLists (\r
-                            mHiiDatabaseProt,\r
-                            EFI_HII_PACKAGE_TYPE_ALL,\r
-                            NULL,\r
-                            &BufferSize,\r
-                            HiiHandles\r
-                            );\r
-  }\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    FreePool (HiiHandles);\r
-    return NULL;\r
-  }\r
-\r
-  //\r
-  // Search Hii Handle by Driver Handle\r
-  //\r
-  HiiHandle = NULL;\r
-  HandleCount = BufferSize / sizeof (EFI_HII_HANDLE);\r
-  for (Index = 0; Index < HandleCount; Index++) {\r
-    Status = mHiiDatabaseProt->GetPackageListHandle (\r
-                            mHiiDatabaseProt,\r
-                            HiiHandles[Index],\r
-                            &Handle\r
-                            );\r
-    if (!EFI_ERROR (Status) && (Handle == DriverHandle)) {\r
-      HiiHandle = HiiHandles[Index];\r
-      break;\r
-    }\r
-  }\r
-\r
-  FreePool (HiiHandles);\r
-  return HiiHandle;\r
-}\r
-\r
-/**\r
-  Exports the contents of one or all package lists in the HII database into a buffer.\r
-\r
-  If Handle is not NULL and not a valid EFI_HII_HANDLE registered in the database, \r
-  then ASSERT.\r
-  If PackageListHeader is NULL, then ASSERT.\r
-  If PackageListSize is NULL, then ASSERT.\r
-\r
-  @param  Handle                 The HII Handle.\r
-  @param  PackageListHeader      A pointer to a buffer that will contain the results of \r
-                                 the export function.\r
-  @param  PackageListSize        On output, the length of the buffer that is required for the exported data.\r
-\r
-  @retval EFI_SUCCESS            Package exported.\r
-\r
-  @retval EFI_OUT_OF_RESOURCES   Not enought memory to complete the operations.\r
-\r
-**/\r
-EFI_STATUS \r
-EFIAPI\r
-HiiLibExportPackageLists (\r
-  IN EFI_HII_HANDLE                    Handle,\r
-  OUT EFI_HII_PACKAGE_LIST_HEADER      **PackageListHeader,\r
-  OUT UINTN                            *PackageListSize\r
-  )\r
-{\r
-  EFI_STATUS                       Status;\r
-  UINTN                            Size;\r
-  EFI_HII_PACKAGE_LIST_HEADER      *PackageListHdr;\r
-\r
-  ASSERT (PackageListSize != NULL);\r
-  ASSERT (PackageListHeader != NULL);\r
-\r
-  if (Handle != NULL) {\r
-    ASSERT (IsHiiHandleRegistered (Handle));\r
-  }\r
-\r
-  Size = 0;\r
-  PackageListHdr = NULL;\r
-  Status = mHiiDatabaseProt->ExportPackageLists (\r
-                                      mHiiDatabaseProt,\r
-                                      Handle,\r
-                                      &Size,\r
-                                      PackageListHdr\r
-                                      );\r
-  ASSERT_EFI_ERROR (Status != EFI_BUFFER_TOO_SMALL);\r
-  \r
-  if (Status == EFI_BUFFER_TOO_SMALL) {\r
-    PackageListHdr = AllocateZeroPool (Size);\r
-    \r
-    if (PackageListHeader == NULL) {\r
-      return EFI_OUT_OF_RESOURCES;\r
-    } else {\r
-      Status = mHiiDatabaseProt->ExportPackageLists (\r
-                                          mHiiDatabaseProt,\r
-                                          Handle,\r
-                                          &Size,\r
-                                          PackageListHdr\r
-                                           );\r
-    }\r
-  }\r
-\r
-  if (!EFI_ERROR (Status)) {\r
-    *PackageListHeader = PackageListHdr;\r
-    *PackageListSize   = Size;\r
-  } else {\r
-    FreePool (PackageListHdr);\r
-  }\r
-\r
-  return Status;\r
-}\r
-\r
-/**\r
-  \r
-  This function returns a list of the package handles of the   \r
-  specified type that are currently active in the HII database. The   \r
-  pseudo-type EFI_HII_PACKAGE_TYPE_ALL will cause all package   \r
-  handles to be listed.\r
-\r
-  If HandleBufferLength is NULL, then ASSERT.\r
-  If HandleBuffer is NULL, the ASSERT.\r
-  If PackageType is EFI_HII_PACKAGE_TYPE_GUID and PackageGuid is\r
-  NULL, then ASSERT.\r
-  If PackageType is not EFI_HII_PACKAGE_TYPE_GUID and PackageGuid is not\r
-  NULL, then ASSERT.\r
-  \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
-  \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 output, the length of the handle buffer\r
-                              that is required for the handles found.\r
-\r
-  @param HandleBuffer         On output, an array of EFI_HII_HANDLE  instances returned.\r
-                              The caller is responcible to free this pointer allocated.\r
-\r
-  @retval EFI_SUCCESS           The matching handles are outputed successfully.\r
-                                HandleBufferLength is updated with the actual length.\r
-  @retval EFI_OUT_OF_RESOURCES  Not enough resource to complete the operation.\r
-  @retval EFI_NOT_FOUND         No matching handle could not be found in database.\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-HiiLibListPackageLists (\r
-  IN        UINT8                     PackageType,\r
-  IN CONST  EFI_GUID                  *PackageGuid,\r
-  IN OUT    UINTN                     *HandleBufferLength,\r
-  OUT       EFI_HII_HANDLE            **HandleBuffer\r
-  )\r
-{\r
-  EFI_STATUS          Status;\r
-  \r
-  ASSERT (HandleBufferLength != NULL);\r
-  ASSERT (HandleBuffer != NULL);\r
-  \r
-  *HandleBufferLength = 0;\r
-  *HandleBuffer       = NULL;\r
-\r
-  if (PackageType == EFI_HII_PACKAGE_TYPE_GUID) {\r
-    ASSERT (PackageGuid != NULL);\r
-  } else {\r
-    ASSERT (PackageGuid == NULL);\r
-  }\r
-\r
-  Status = mHiiDatabaseProt->ListPackageLists (\r
-                            mHiiDatabaseProt,\r
-                            PackageType,\r
-                            PackageGuid,\r
-                            HandleBufferLength,\r
-                            *HandleBuffer\r
-                            );\r
-  if (EFI_ERROR (Status) && (Status != EFI_BUFFER_TOO_SMALL)) {\r
-    //\r
-    // No packages is registered to UEFI HII Database, just return.\r
-    // \r
-    //\r
-    return Status;\r
-  }\r
-\r
-  *HandleBuffer = AllocateZeroPool (*HandleBufferLength);\r
-  \r
-  if (*HandleBuffer == NULL) {\r
-    return EFI_OUT_OF_RESOURCES;\r
-  }\r
-  \r
-  return mHiiDatabaseProt->ListPackageLists (\r
-                            mHiiDatabaseProt,\r
-                            PackageType,\r
-                            PackageGuid,\r
-                            HandleBufferLength,\r
-                            *HandleBuffer\r
-                            );\r
-  \r
-}\r
-/**\r
-  This function check if the Hii Handle is a valid handle registered\r
-  in the HII database.\r
-\r
-  @param HiiHandle The HII Handle.\r
-\r
-  @retval TRUE If it is a valid HII handle.\r
-  @retval FALSE If it is a invalid HII handle.\r
-**/\r
-BOOLEAN\r
-IsHiiHandleRegistered (\r
-  EFI_HII_HANDLE    HiiHandle\r
-  )\r
-{\r
-  EFI_STATUS                   Status;\r
-  UINTN                        BufferSize;\r
-  EFI_HII_PACKAGE_LIST_HEADER  *HiiPackageList;\r
-\r
-  ASSERT (HiiHandle != NULL);\r
-\r
-  HiiPackageList = NULL;\r
-  BufferSize = 0;\r
-\r
-  Status = mHiiDatabaseProt->ExportPackageLists (\r
-             mHiiDatabaseProt,\r
-             HiiHandle,\r
-             &BufferSize,\r
-             HiiPackageList\r
-             );\r
-\r
-  return (BOOLEAN) (Status == EFI_BUFFER_TOO_SMALL);\r
-}\r
-\r
diff --git a/MdePkg/Library/UefiHiiLib/HiiString.c b/MdePkg/Library/UefiHiiLib/HiiString.c
deleted file mode 100644 (file)
index cd49441..0000000
+++ /dev/null
@@ -1,602 +0,0 @@
-/** @file\r
-  HII Library implementation that uses DXE protocols and services.\r
-\r
-  Copyright (c) 2006 - 2008, Intel Corporation<BR>\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
-**/\r
-\r
-\r
-#include "InternalHiiLib.h"\r
-\r
-\r
-//\r
-// Lookup table of ISO639-2 3 character language codes to ISO 639-1 2 character language codes\r
-// Each entry is 5 CHAR8 values long.  The first 3 CHAR8 values are the ISO 639-2 code.\r
-// The last 2 CHAR8 values are the ISO 639-1 code.\r
-//\r
-GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 Iso639ToRfc3066ConversionTable[] =\r
-"\\r
-aaraa\\r
-abkab\\r
-afraf\\r
-amham\\r
-araar\\r
-asmas\\r
-aymay\\r
-azeaz\\r
-bakba\\r
-belbe\\r
-benbn\\r
-bihbh\\r
-bisbi\\r
-bodbo\\r
-brebr\\r
-bulbg\\r
-catca\\r
-cescs\\r
-corkw\\r
-cosco\\r
-cymcy\\r
-danda\\r
-deude\\r
-dzodz\\r
-ellel\\r
-engen\\r
-epoeo\\r
-estet\\r
-euseu\\r
-faofo\\r
-fasfa\\r
-fijfj\\r
-finfi\\r
-frafr\\r
-fryfy\\r
-gaiga\\r
-gdhgd\\r
-glggl\\r
-grngn\\r
-gujgu\\r
-hauha\\r
-hebhe\\r
-hinhi\\r
-hrvhr\\r
-hunhu\\r
-hyehy\\r
-ikuiu\\r
-ileie\\r
-inaia\\r
-indid\\r
-ipkik\\r
-islis\\r
-itait\\r
-jawjw\\r
-jpnja\\r
-kalkl\\r
-kankn\\r
-kasks\\r
-katka\\r
-kazkk\\r
-khmkm\\r
-kinrw\\r
-kirky\\r
-korko\\r
-kurku\\r
-laolo\\r
-latla\\r
-lavlv\\r
-linln\\r
-litlt\\r
-ltzlb\\r
-malml\\r
-marmr\\r
-mkdmk\\r
-mlgmg\\r
-mltmt\\r
-molmo\\r
-monmn\\r
-mrimi\\r
-msams\\r
-myamy\\r
-nauna\\r
-nepne\\r
-nldnl\\r
-norno\\r
-ocioc\\r
-ormom\\r
-panpa\\r
-polpl\\r
-porpt\\r
-pusps\\r
-quequ\\r
-rohrm\\r
-ronro\\r
-runrn\\r
-rusru\\r
-sagsg\\r
-sansa\\r
-sinsi\\r
-slksk\\r
-slvsl\\r
-smise\\r
-smosm\\r
-snasn\\r
-sndsd\\r
-somso\\r
-sotst\\r
-spaes\\r
-sqisq\\r
-srpsr\\r
-sswss\\r
-sunsu\\r
-swasw\\r
-swesv\\r
-tamta\\r
-tattt\\r
-telte\\r
-tgktg\\r
-tgltl\\r
-thath\\r
-tsnts\\r
-tuktk\\r
-twitw\\r
-uigug\\r
-ukruk\\r
-urdur\\r
-uzbuz\\r
-vievi\\r
-volvo\\r
-wolwo\\r
-xhoxh\\r
-yidyi\\r
-zhaza\\r
-zhozh\\r
-zulzu\\r
-";\r
-\r
-\r
-\r
-/**\r
-  This function adds the string into String Package of each language\r
-  supported by the package list.\r
-\r
-  If String is NULL, then ASSERT.\r
-  If StringId is NULL, the ASSERT.\r
-  If PackageList could not be found in the default HII database, then ASSERT.\r
-\r
-  @param  PackageList            Handle of the package list where this string will\r
-                                            be added.\r
-  @param  StringId               On return, contains the new strings id, which is\r
-                                          unique within PackageList.\r
-  @param  String                 Points to the new null-terminated string.\r
-\r
-  @retval EFI_SUCCESS             The new string was added successfully.\r
-  @retval EFI_OUT_OF_RESOURCES   Could not add the string due to lack of resources.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-HiiLibNewString (\r
-  IN  EFI_HII_HANDLE                  PackageList,\r
-  OUT EFI_STRING_ID                   *StringId,\r
-  IN  CONST EFI_STRING                String\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-  CHAR8       *Languages;\r
-  CHAR8       *LangStrings;\r
-  CHAR8       Lang[RFC_3066_ENTRY_SIZE];\r
-\r
-  ASSERT (String != NULL);\r
-  ASSERT (StringId != NULL);\r
-\r
-  Status = EFI_SUCCESS;\r
-\r
-  Languages = HiiLibGetSupportedLanguages (PackageList);\r
-\r
-  LangStrings = Languages;\r
-  while (*LangStrings != 0) {\r
-    HiiLibGetNextLanguage (&LangStrings, Lang);\r
-\r
-    //\r
-    // For each language supported by the package,\r
-    // a string token is created.\r
-    //\r
-    Status = mHiiStringProt->NewString (\r
-                                 mHiiStringProt,\r
-                                 PackageList,\r
-                                 StringId,\r
-                                 Lang,\r
-                                 NULL,\r
-                                 String,\r
-                                 NULL\r
-                                 );\r
-    if (EFI_ERROR (Status)) {\r
-      break;\r
-    }\r
-  }\r
-\r
-  FreePool (Languages);\r
-\r
-  return Status;\r
-  \r
-}\r
-\r
-\r
-/**\r
-  This function update the specified string in String Package of each language\r
-  supported by the package list.\r
-\r
-  If String is NULL, then ASSERT.\r
-  If PackageList could not be found in the default HII database, then ASSERT.\r
-  If StringId is not found in PackageList, then ASSERT.\r
-\r
-  @param  PackageList            Handle of the package list where this string will\r
-                                            be added.\r
-  @param  StringId               Ths String Id to be updated.\r
-  @param  String                 Points to the new null-terminated string.\r
-\r
-  @retval EFI_SUCCESS            The new string was added successfully.\r
-  @retval EFI_OUT_OF_RESOURCES   Could not add the string due to lack of resources.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-HiiLibSetString (\r
-  IN  EFI_HII_HANDLE                  PackageList,\r
-  IN  EFI_STRING_ID                   StringId,\r
-  IN  CONST EFI_STRING                String\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-  CHAR8       *Languages;\r
-  CHAR8       *LangStrings;\r
-  CHAR8       Lang[RFC_3066_ENTRY_SIZE];\r
-\r
-  ASSERT (IsHiiHandleRegistered (PackageList));\r
-\r
-  Status = EFI_SUCCESS;\r
-\r
-  Languages = HiiLibGetSupportedLanguages (PackageList);\r
-  ASSERT (Languages != NULL);\r
-\r
-  LangStrings = Languages;\r
-  while (*LangStrings != 0) {\r
-    HiiLibGetNextLanguage (&LangStrings, Lang);\r
-\r
-    //\r
-    // For each language supported by the package,\r
-    // the string is updated.\r
-    //\r
-    Status = mHiiStringProt->SetString (\r
-                                 mHiiStringProt,\r
-                                 PackageList,\r
-                                 StringId,\r
-                                 Lang,\r
-                                 String,\r
-                                 NULL\r
-                                 );\r
-    if (EFI_ERROR (Status)) {\r
-      break;\r
-    }\r
-  }\r
-\r
-  FreePool (Languages);\r
-\r
-  return Status;\r
-}\r
-\r
-\r
-/**\r
-  Get the string given the StringId and String package Producer's Guid. The caller\r
-  is responsible to free the *String.\r
-\r
-  If PackageList with the matching ProducerGuid is not found, then ASSERT.\r
-  If PackageList with the matching ProducerGuid is found but no String is\r
-  specified by StringId is found, then ASSERT.\r
-\r
-  @param  ProducerGuid           The Guid of String package list.\r
-  @param  StringId               The String ID.\r
-  @param  String                 The output string.\r
-\r
-  @retval EFI_SUCCESS            Operation is successful.\r
-  @retval EFI_OUT_OF_RESOURCES   There is not enought memory in the system.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-HiiLibGetStringFromToken (\r
-  IN  EFI_GUID                        *ProducerGuid,\r
-  IN  EFI_STRING_ID                   StringId,\r
-  OUT EFI_STRING                      *String\r
-  )\r
-{\r
-  EFI_STATUS      Status;\r
-  UINTN           Index;\r
-  UINTN           HandleBufferLen;\r
-  EFI_HII_HANDLE  *HiiHandleBuffer;\r
-  EFI_GUID        Guid;\r
-\r
-  Status = HiiLibGetHiiHandles (&HandleBufferLen, &HiiHandleBuffer);\r
-  if (EFI_ERROR(Status)) {\r
-    return Status;\r
-  }\r
-  for (Index = 0; Index < (HandleBufferLen / sizeof (EFI_HII_HANDLE)); Index++) {\r
-    Status = HiiLibExtractGuidFromHiiHandle (HiiHandleBuffer[Index], &Guid);\r
-    if (EFI_ERROR(Status)) {\r
-      return Status;\r
-    }\r
-    if (CompareGuid (&Guid, ProducerGuid)) {\r
-      break;\r
-    }\r
-  }\r
-\r
-  if (Index >= (HandleBufferLen / sizeof (EFI_HII_HANDLE))) {\r
-    //\r
-    // If PackageList with the matching ProducerGuid is not found, then ASSERT.\r
-    //\r
-    ASSERT (FALSE);\r
-    Status = EFI_NOT_FOUND;\r
-    goto Out;\r
-  }\r
-\r
-  Status = HiiLibGetStringFromHandle (HiiHandleBuffer[Index], StringId, String);\r
-\r
-Out:\r
-  if (HiiHandleBuffer != NULL) {\r
-    FreePool (HiiHandleBuffer);\r
-  }\r
-  return Status;\r
-}\r
-\r
-/**\r
-  This function try to retrieve string from String package of current language.\r
-  If fails, it try to retrieve string from String package of first language it support.\r
-\r
-  If StringSize is NULL, then ASSERT.\r
-  If String is NULL and *StringSize is not 0, then ASSERT.\r
-  If PackageList could not be found in the default HII database, then ASSERT.\r
-  If StringId is not found in PackageList, then ASSERT.\r
-\r
-  @param  PackageList     The package list in the HII database to search for\r
-                                     the specified string.\r
-  @param  StringId          The string's id, which is unique within\r
-                                      PackageList.\r
-  @param  String             Points to the new null-terminated string.\r
-  @param  StringSize       On entry, points to the size of the buffer pointed\r
-                                 to by String, in bytes. On return, points to the\r
-                                 length of the string, in bytes.\r
-\r
-  @retval EFI_SUCCESS            The string was returned successfully.\r
-  @retval EFI_NOT_FOUND          The string specified by StringId is not available.\r
-  @retval EFI_BUFFER_TOO_SMALL   The buffer specified by StringLength is too small\r
-                                 to hold the string.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-HiiLibGetString (\r
-  IN  EFI_HII_HANDLE                  PackageList,\r
-  IN  EFI_STRING_ID                   StringId,\r
-  OUT EFI_STRING                      String,\r
-  IN  OUT UINTN                       *StringSize\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-  CHAR8       *Languages;\r
-  CHAR8       *LangStrings;\r
-  CHAR8       Lang[RFC_3066_ENTRY_SIZE];\r
-  CHAR8       CurrentLang[RFC_3066_ENTRY_SIZE];\r
-\r
-  ASSERT (StringSize != NULL);\r
-  ASSERT (!(*StringSize != 0 && String == NULL));\r
-  ASSERT (IsHiiHandleRegistered (PackageList));\r
-\r
-  GetCurrentLanguage (CurrentLang);\r
-\r
-  Status = mHiiStringProt->GetString (\r
-                               mHiiStringProt,\r
-                               CurrentLang,\r
-                               PackageList,\r
-                               StringId,\r
-                               String,\r
-                               StringSize,\r
-                               NULL\r
-                               );\r
-\r
-  if (EFI_ERROR (Status) && (Status != EFI_BUFFER_TOO_SMALL)) {\r
-    Languages = HiiLibGetSupportedLanguages (PackageList);\r
-    ASSERT (Languages != NULL);\r
-    \r
-    LangStrings = Languages;\r
-    HiiLibGetNextLanguage (&LangStrings, Lang);\r
-    FreePool (Languages);\r
-\r
-    Status = mHiiStringProt->GetString (\r
-                                 mHiiStringProt,\r
-                                 Lang,\r
-                                 PackageList,\r
-                                 StringId,\r
-                                 String,\r
-                                 StringSize,\r
-                                 NULL\r
-                                 );\r
-  }\r
-\r
-  return Status;\r
-}\r
-\r
-\r
-/**\r
-  Get string specified by StringId form the HiiHandle. The caller\r
-  is responsible to free the *String.\r
-\r
-  If String is NULL, then ASSERT.\r
-  If HiiHandle could not be found in the default HII database, then ASSERT.\r
-  If StringId is not found in PackageList, then ASSERT.\r
-\r
-  @param  HiiHandle              The HII handle of package list.\r
-  @param  StringId               The String ID.\r
-  @param  String                 The output string.\r
-\r
-  @retval EFI_NOT_FOUND          String is not found.\r
-  @retval EFI_SUCCESS            Operation is successful.\r
-  @retval EFI_OUT_OF_RESOURCES   There is not enought memory in the system.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-HiiLibGetStringFromHandle (\r
-  IN  EFI_HII_HANDLE                  HiiHandle,\r
-  IN  EFI_STRING_ID                   StringId,\r
-  OUT EFI_STRING                      *String\r
-  )\r
-{\r
-  EFI_STATUS                          Status;\r
-  UINTN                               StringSize;\r
-\r
-  ASSERT (String != NULL);\r
-\r
-  StringSize = HII_LIB_DEFAULT_STRING_SIZE;\r
-  *String    = AllocateZeroPool (StringSize);\r
-  if (*String == NULL) {\r
-    return EFI_OUT_OF_RESOURCES;\r
-  }\r
-\r
-  Status = HiiLibGetString (HiiHandle, StringId, *String, &StringSize);\r
-  if (Status == EFI_BUFFER_TOO_SMALL) {\r
-    FreePool (*String);\r
-    *String = AllocateZeroPool (StringSize);\r
-    if (*String == NULL) {\r
-      return EFI_OUT_OF_RESOURCES;\r
-    }\r
-    Status = HiiLibGetString (HiiHandle, StringId, *String, &StringSize);\r
-  }\r
-\r
-  return Status;\r
-}\r
-\r
-\r
-\r
-/**\r
-  Convert language code from RFC3066 to ISO639-2.\r
-\r
-  @param  LanguageRfc3066        RFC3066 language code.\r
-  @param  LanguageIso639         ISO639-2 language code.\r
-\r
-  @retval EFI_SUCCESS            Language code converted.\r
-  @retval EFI_NOT_FOUND          Language code not found.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-ConvertRfc3066LanguageToIso639Language (\r
-  IN  CHAR8   *LanguageRfc3066,\r
-  OUT CHAR8   *LanguageIso639\r
-  )\r
-{\r
-  UINTN  Index;\r
-\r
-  if ((LanguageRfc3066[2] != '-') && (LanguageRfc3066[2] != 0)) {\r
-    CopyMem (LanguageIso639, LanguageRfc3066, 3);\r
-    return EFI_SUCCESS;\r
-  }\r
-\r
-  for (Index = 0; Iso639ToRfc3066ConversionTable[Index] != 0; Index += 5) {\r
-    if (CompareMem (LanguageRfc3066, &Iso639ToRfc3066ConversionTable[Index + 3], 2) == 0) {\r
-      CopyMem (LanguageIso639, &Iso639ToRfc3066ConversionTable[Index], 3);\r
-      return EFI_SUCCESS;\r
-    }\r
-  }\r
-\r
-  return EFI_NOT_FOUND;\r
-}\r
-\r
-\r
-/**\r
-  Convert language code from ISO639-2 to RFC3066.\r
-\r
-  LanguageIso639 contain a single ISO639-2 code such as\r
-  "eng" or "fra".\r
-\r
-  The LanguageRfc3066 must be a buffer large enough\r
-  for RFC_3066_ENTRY_SIZE characters.\r
-\r
-  If LanguageIso639 is NULL, then ASSERT.\r
-  If LanguageRfc3066 is NULL, then ASSERT.\r
-\r
-  @param  LanguageIso639         ISO639-2 language code.\r
-  @param  LanguageRfc3066        RFC3066 language code.\r
-\r
-  @retval EFI_SUCCESS            Language code converted.\r
-  @retval EFI_NOT_FOUND          Language code not found.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-ConvertIso639LanguageToRfc3066Language (\r
-  IN  CONST CHAR8   *LanguageIso639,\r
-  OUT CHAR8         *LanguageRfc3066\r
-  )\r
-{\r
-  UINTN Index;\r
-  \r
-  for (Index = 0; Iso639ToRfc3066ConversionTable[Index] != 0; Index += 5) {\r
-    if (CompareMem (LanguageIso639, &Iso639ToRfc3066ConversionTable[Index], 3) == 0) {\r
-      CopyMem (LanguageRfc3066, &Iso639ToRfc3066ConversionTable[Index + 3], 2);\r
-      return EFI_SUCCESS;\r
-    }\r
-  }\r
-\r
-  return EFI_NOT_FOUND;\r
-}\r
-\r
-/**\r
-  Convert language code list from RFC3066 to ISO639-2, e.g. "en-US;fr-FR" will\r
-  be converted to "engfra".\r
-\r
-  @param  SupportedLanguages     The RFC3066 language list.\r
-\r
-  @return The ISO639-2 language list.\r
-\r
-**/\r
-CHAR8 *\r
-EFIAPI\r
-Rfc3066ToIso639 (\r
-  CHAR8  *SupportedLanguages\r
-  )\r
-{\r
-  CHAR8       *Languages;\r
-  CHAR8       *ReturnValue;\r
-  CHAR8       *LangCodes;\r
-  CHAR8       LangRfc3066[RFC_3066_ENTRY_SIZE];\r
-  CHAR8       LangIso639[ISO_639_2_ENTRY_SIZE];\r
-  EFI_STATUS  Status;\r
-\r
-  ReturnValue = AllocateZeroPool (AsciiStrSize (SupportedLanguages));\r
-  if (ReturnValue == NULL) {\r
-    return ReturnValue;\r
-  }\r
-\r
-  Languages = ReturnValue;\r
-  LangCodes = SupportedLanguages;\r
-  while (*LangCodes != 0) {\r
-    HiiLibGetNextLanguage (&LangCodes, LangRfc3066);\r
-\r
-    Status = ConvertRfc3066LanguageToIso639Language (LangRfc3066, LangIso639);\r
-    if (!EFI_ERROR (Status)) {\r
-      CopyMem (Languages, LangIso639, 3);\r
-      Languages = Languages + 3;\r
-    }\r
-  }\r
-\r
-  return ReturnValue;\r
-}\r
-\r
-\r
diff --git a/MdePkg/Library/UefiHiiLib/InternalHiiLib.h b/MdePkg/Library/UefiHiiLib/InternalHiiLib.h
deleted file mode 100644 (file)
index 18d168e..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/** @file\r
-  Internal include file for the HII Library instance.\r
-\r
-  Copyright (c) 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
-**/\r
-\r
-#ifndef __INTERNAL_HII_LIB_H__\r
-#define __INTERNAL_HII_LIB_H__\r
-\r
-#include <Uefi.h>\r
-\r
-#include <Protocol/HiiDatabase.h>\r
-#include <Protocol/HiiString.h>\r
-#include <Protocol/DevicePath.h>\r
-\r
-#include <Library/BaseLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/HiiLib.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/DevicePathLib.h>\r
-#include <Library/UefiLib.h>\r
-\r
-#define HII_LIB_DEFAULT_STRING_SIZE     0x200\r
-\r
-\r
-extern CONST EFI_HII_DATABASE_PROTOCOL         *mHiiDatabaseProt;\r
-extern CONST EFI_HII_STRING_PROTOCOL           *mHiiStringProt;\r
-\r
-/**\r
-  This function check if the Hii Handle is a valid handle registered\r
-  in the HII database.\r
-\r
-  @param HiiHandle The HII Handle.\r
-\r
-  @retval TRUE If it is a valid HII handle.\r
-  @retval FALSE If it is a invalid HII handle.\r
-**/\r
-BOOLEAN\r
-IsHiiHandleRegistered (\r
-  EFI_HII_HANDLE    HiiHandle\r
-  );\r
-\r
-#endif\r
diff --git a/MdePkg/Library/UefiHiiLib/UefiHiiLib.inf b/MdePkg/Library/UefiHiiLib/UefiHiiLib.inf
deleted file mode 100644 (file)
index 1d1d9aa..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-#/** @file\r
-# Instance of HII Library using DXE protocols and services.\r
-#\r
-# HII Library implementation that uses DXE protocols and services.\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation\r
-#\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
-#  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
-[Defines]\r
-  INF_VERSION                    = 0x00010005\r
-  BASE_NAME                      = UefiHiiLib\r
-  FILE_GUID                      = 3143687A-7C80-404e-B5FE-2D88980E1B1C\r
-  MODULE_TYPE                    = UEFI_DRIVER\r
-  VERSION_STRING                 = 1.0\r
-  LIBRARY_CLASS                  = HiiLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER\r
-  EDK_RELEASE_VERSION            = 0x00020000\r
-\r
-  CONSTRUCTOR                    = HiiLibConstructor\r
-\r
-#\r
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC\r
-#\r
-\r
-[Sources.common]\r
-  HiiLib.c\r
-  HiiString.c\r
-  HiiLanguage.c\r
-  InternalHiiLib.h\r
-\r
-[Packages]\r
-  MdePkg/MdePkg.dec\r
-\r
-[LibraryClasses]\r
-  MemoryAllocationLib\r
-  BaseMemoryLib\r
-  BaseLib\r
-  DebugLib\r
-  UefiBootServicesTableLib\r
-  DevicePathLib\r
-  UefiLib\r
-\r
-[Protocols]\r
-  gEfiHiiDatabaseProtocolGuid  # ALWAYS_CONSUMED\r
-  gEfiHiiStringProtocolGuid    # ALWAYS_CONSUMED\r
-  gEfiDevicePathProtocolGuid  \r
-\r
-[Depex]\r
-  gEfiHiiDatabaseProtocolGuid AND\r
-  gEfiHiiStringProtocolGuid\r
-  \r
diff --git a/MdePkg/Library/UefiIfrSupportLib/UefiIfrForm.c b/MdePkg/Library/UefiIfrSupportLib/UefiIfrForm.c
deleted file mode 100644 (file)
index b6da34a..0000000
+++ /dev/null
@@ -1,1394 +0,0 @@
-/** @file\r
-Utility functions which helps in opcode creation, HII configuration string manipulations, \r
-pop up window creations, setup browser persistence data set and get.\r
-\r
-Copyright (c) 2007- 2008, 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
-**/\r
-\r
-#include "UefiIfrLibraryInternal.h"\r
-\r
-CONST EFI_FORM_BROWSER2_PROTOCOL      *mFormBrowser2     = NULL;\r
-CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *mIfrSupportLibHiiConfigRouting = NULL;\r
-\r
-/**\r
-  This function locate FormBrowser2 protocols for later usage.\r
-\r
-  @return Status the status to locate protocol.\r
-**/\r
-EFI_STATUS\r
-LocateFormBrowser2Protocols (\r
-  VOID\r
-  )\r
-{\r
-  EFI_STATUS Status;\r
-  //\r
-  // Locate protocols for later usage\r
-  //\r
-  if (mFormBrowser2 == NULL) {\r
-    Status = gBS->LocateProtocol (&gEfiFormBrowser2ProtocolGuid, NULL, (VOID **) &mFormBrowser2);\r
-    if (EFI_ERROR (Status)) {\r
-      return Status;\r
-    }\r
-  }\r
-  \r
-  if (mIfrSupportLibHiiConfigRouting == NULL) {\r
-    Status = gBS->LocateProtocol (&gEfiHiiConfigRoutingProtocolGuid, NULL, (VOID **) &mIfrSupportLibHiiConfigRouting);\r
-    if (EFI_ERROR (Status)) {\r
-      return Status;\r
-    }\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-//\r
-// Fake <ConfigHdr>\r
-//\r
-GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT16 mFakeConfigHdr[] = L"GUID=00000000000000000000000000000000&NAME=0000&PATH=0";\r
-\r
-/**\r
-  Draw a dialog and return the selected key.\r
-\r
-  @param  NumberOfLines          The number of lines for the dialog box\r
-  @param  KeyValue               The EFI_KEY value returned if HotKey is TRUE..\r
-  @param  Marker                 A series of (quantity == NumberOfLines - 1) text\r
-                                 strings which will be used to construct the dialog\r
-                                 box\r
-\r
-  @retval EFI_SUCCESS            Displayed dialog and received user interaction\r
-  @retval EFI_INVALID_PARAMETER  One of the parameters was invalid.\r
-  @retval EFI_OUT_OF_RESOURCES   There is no enough available memory space.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-IfrLibCreatePopUp2 (\r
-  IN  UINTN                       NumberOfLines,\r
-  OUT EFI_INPUT_KEY               *KeyValue,\r
-  IN  VA_LIST                     Marker\r
-  )\r
-{\r
-  UINTN                         Index;\r
-  UINTN                         Count;\r
-  UINTN                         Start;\r
-  UINTN                         Top;\r
-  CHAR16                        *StringPtr;\r
-  UINTN                         LeftColumn;\r
-  UINTN                         RightColumn;\r
-  UINTN                         TopRow;\r
-  UINTN                         BottomRow;\r
-  UINTN                         DimensionsWidth;\r
-  UINTN                         DimensionsHeight;\r
-  EFI_INPUT_KEY                 Key;\r
-  UINTN                         LargestString;\r
-  CHAR16                        *StackString;\r
-  EFI_STATUS                    Status;\r
-  UINTN                         StringLen;\r
-  CHAR16                        *LineBuffer;\r
-  CHAR16                        **StringArray;\r
-  EFI_EVENT                     TimerEvent;\r
-  EFI_EVENT                     WaitList[2];\r
-  UINTN                         CurrentAttribute;\r
-  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *ConOut;\r
-  CHAR16                        *String;\r
-\r
-  String = VA_ARG (Marker, CHAR16 *);\r
-  \r
-  if ((KeyValue == NULL) || (String == NULL)) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  TopRow      = 0;\r
-  BottomRow   = 0;\r
-  LeftColumn  = 0;\r
-  RightColumn = 0;\r
-\r
-  ConOut = gST->ConOut;\r
-  ConOut->QueryMode (ConOut, ConOut->Mode->Mode, &RightColumn, &BottomRow);\r
-\r
-  DimensionsWidth  = RightColumn - LeftColumn;\r
-  DimensionsHeight = BottomRow - TopRow;\r
-\r
-  CurrentAttribute = ConOut->Mode->Attribute;\r
-\r
-  LineBuffer = AllocateZeroPool (DimensionsWidth * sizeof (CHAR16));\r
-  if (LineBuffer == NULL) {\r
-    return EFI_OUT_OF_RESOURCES;\r
-  }\r
-\r
-  //\r
-  // Determine the largest string in the dialog box\r
-  // Notice we are starting with 1 since String is the first string\r
-  //\r
-  StringArray = AllocateZeroPool (NumberOfLines * sizeof (CHAR16 *));\r
-  if (StringArray == NULL) {\r
-    FreePool (LineBuffer);\r
-    return EFI_OUT_OF_RESOURCES;\r
-  }\r
-  LargestString = StrLen (String);\r
-  StringArray[0] = String;\r
-\r
-  for (Index = 1; Index < NumberOfLines; Index++) {\r
-    StackString = VA_ARG (Marker, CHAR16 *);\r
-\r
-    if (StackString == NULL) {\r
-      FreePool (LineBuffer);\r
-      FreePool (StringArray);\r
-      return EFI_INVALID_PARAMETER;\r
-    }\r
-\r
-    StringArray[Index] = StackString;\r
-    StringLen = StrLen (StackString);\r
-    if (StringLen > LargestString) {\r
-      LargestString = StringLen;\r
-    }\r
-  }\r
-\r
-  if ((LargestString + 2) > DimensionsWidth) {\r
-    LargestString = DimensionsWidth - 2;\r
-  }\r
-\r
-  //\r
-  // Subtract the PopUp width from total Columns, allow for one space extra on\r
-  // each end plus a border.\r
-  //\r
-  Start     = (DimensionsWidth - LargestString - 2) / 2 + LeftColumn + 1;\r
-\r
-  Top       = ((DimensionsHeight - NumberOfLines - 2) / 2) + TopRow - 1;\r
-\r
-  //\r
-  // Disable cursor\r
-  //\r
-  ConOut->EnableCursor (ConOut, FALSE);\r
-  ConOut->SetAttribute (ConOut, EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE);\r
-\r
-  StringPtr = &LineBuffer[0];\r
-  *StringPtr++ = BOXDRAW_DOWN_RIGHT;\r
-  for (Index = 0; Index < LargestString; Index++) {\r
-    *StringPtr++ = BOXDRAW_HORIZONTAL;\r
-  }\r
-  *StringPtr++ = BOXDRAW_DOWN_LEFT;\r
-  *StringPtr = L'\0';\r
-\r
-  ConOut->SetCursorPosition (ConOut, Start, Top);\r
-  ConOut->OutputString (ConOut, LineBuffer);\r
-\r
-  for (Index = 0; Index < NumberOfLines; Index++) {\r
-    StringPtr = &LineBuffer[0];\r
-    *StringPtr++ = BOXDRAW_VERTICAL;\r
-\r
-    for (Count = 0; Count < LargestString; Count++) {\r
-      StringPtr[Count] = L' ';\r
-    }\r
-\r
-    StringLen = StrLen (StringArray[Index]);\r
-    if (StringLen > LargestString) {\r
-      StringLen = LargestString;\r
-    }\r
-    CopyMem (\r
-      StringPtr + ((LargestString - StringLen) / 2),\r
-      StringArray[Index],\r
-      StringLen * sizeof (CHAR16)\r
-      );\r
-    StringPtr += LargestString;\r
-\r
-    *StringPtr++ = BOXDRAW_VERTICAL;\r
-    *StringPtr = L'\0';\r
-\r
-    ConOut->SetCursorPosition (ConOut, Start, Top + 1 + Index);\r
-    ConOut->OutputString (ConOut, LineBuffer);\r
-  }\r
-\r
-  StringPtr = &LineBuffer[0];\r
-  *StringPtr++ = BOXDRAW_UP_RIGHT;\r
-  for (Index = 0; Index < LargestString; Index++) {\r
-    *StringPtr++ = BOXDRAW_HORIZONTAL;\r
-  }\r
-  *StringPtr++ = BOXDRAW_UP_LEFT;\r
-  *StringPtr = L'\0';\r
-\r
-  ConOut->SetCursorPosition (ConOut, Start, Top + NumberOfLines + 1);\r
-  ConOut->OutputString (ConOut, LineBuffer);\r
-\r
-  do {\r
-    Status = gBS->CreateEvent (EVT_TIMER, 0, NULL, NULL, &TimerEvent);\r
-\r
-    //\r
-    // Set a timer event of 1 second expiration\r
-    //\r
-    gBS->SetTimer (\r
-          TimerEvent,\r
-          TimerRelative,\r
-          10000000\r
-          );\r
-\r
-    //\r
-    // Wait for the keystroke event or the timer\r
-    //\r
-    WaitList[0] = gST->ConIn->WaitForKey;\r
-    WaitList[1] = TimerEvent;\r
-    Status      = gBS->WaitForEvent (2, WaitList, &Index);\r
-\r
-    //\r
-    // Check for the timer expiration\r
-    //\r
-    if (!EFI_ERROR (Status) && Index == 1) {\r
-      Status = EFI_TIMEOUT;\r
-    }\r
-\r
-    gBS->CloseEvent (TimerEvent);\r
-  } while (Status == EFI_TIMEOUT);\r
-\r
-  Status = gST->ConIn->ReadKeyStroke (gST->ConIn, &Key);\r
-  CopyMem (KeyValue, &Key, sizeof (EFI_INPUT_KEY));\r
-\r
-  ConOut->SetAttribute (ConOut, CurrentAttribute);\r
-  ConOut->EnableCursor (ConOut, TRUE);\r
-\r
-  FreePool (LineBuffer);\r
-  FreePool (StringArray);\r
-\r
-  return Status;\r
-}\r
-\r
-\r
-/**\r
-  Draw a dialog and return the selected key.\r
-\r
-  @param  NumberOfLines          The number of lines for the dialog box\r
-  @param  KeyValue               The EFI_KEY value returned if HotKey is TRUE..\r
-  @param  String                 Pointer to the first string in the list\r
-  @param  ...                    A series of (quantity == NumberOfLines - 1) text\r
-                                 strings which will be used to construct the dialog\r
-                                 box\r
-\r
-  @retval EFI_SUCCESS            Displayed dialog and received user interaction\r
-  @retval EFI_INVALID_PARAMETER  One of the parameters was invalid.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-IfrLibCreatePopUp (\r
-  IN  UINTN                       NumberOfLines,\r
-  OUT EFI_INPUT_KEY               *KeyValue,\r
-  IN  CHAR16                      *String,\r
-  ...\r
-  )\r
-{\r
-  EFI_STATUS                      Status;\r
-  VA_LIST                         Marker;\r
-\r
-  VA_START (Marker, KeyValue);\r
-\r
-  Status = IfrLibCreatePopUp2 (NumberOfLines, KeyValue, Marker);\r
-\r
-  VA_END (Marker);\r
-\r
-  return Status;\r
-}\r
-\r
-/**\r
-    Extract block name from the array generated by VFR compiler. The name of\r
-  this array is "Vfr + <StorageName> + BlockName", e.g. "VfrMyIfrNVDataBlockName".\r
-  Format of this array is:\r
-     Array length | 4-bytes\r
-       Offset     | 2-bytes\r
-       Width      | 2-bytes\r
-       Offset     | 2-bytes\r
-       Width      | 2-bytes\r
-       ... ...\r
-\r
-    @param Buffer                 Array generated by VFR compiler.\r
-    @param BlockName              The returned <BlockName>\r
-\r
-    @retval EFI_OUT_OF_RESOURCES   Run out of memory resource.\r
-    @retval EFI_INVALID_PARAMETER  Buffer is NULL or BlockName is NULL.\r
-    @retval EFI_SUCCESS            Operation successful.\r
-\r
-**/\r
-EFI_STATUS\r
-ExtractBlockName (\r
-  IN UINT8                        *Buffer,\r
-  OUT CHAR16                      **BlockName\r
-  )\r
-\r
-{\r
-  UINTN       Index;\r
-  UINT32      Length;\r
-  UINT32      BlockNameNumber;\r
-  UINTN       HexStringBufferLen;\r
-  CHAR16      *StringPtr;\r
-\r
-  if ((Buffer == NULL) || (BlockName == NULL)) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  //\r
-  // Calculate number of Offset/Width pair\r
-  //\r
-  CopyMem (&Length, Buffer, sizeof (UINT32));\r
-  BlockNameNumber = (Length - sizeof (UINT32)) / (sizeof (UINT16) * 2);\r
-\r
-  //\r
-  // <BlockName> ::= &OFFSET=1234&WIDTH=1234\r
-  //                 |   8  | 4 |  7   | 4 |\r
-  //\r
-  StringPtr = AllocateZeroPool ((BlockNameNumber * (8 + 4 + 7 + 4) + 1) * sizeof (CHAR16));\r
-  *BlockName = StringPtr;\r
-  if (StringPtr == NULL) {\r
-    return EFI_OUT_OF_RESOURCES;\r
-  }\r
-\r
-  Buffer += sizeof (UINT32);\r
-  for (Index = 0; Index < BlockNameNumber; Index++) {\r
-    StrCpy (StringPtr, L"&OFFSET=");\r
-    StringPtr += 8;\r
-\r
-    HexStringBufferLen = 5;\r
-    BufToHexString (StringPtr, &HexStringBufferLen, Buffer, sizeof (UINT16));\r
-    Buffer += sizeof (UINT16);\r
-    StringPtr += 4;\r
-\r
-    StrCpy (StringPtr, L"&WIDTH=");\r
-    StringPtr += 7;\r
-\r
-    HexStringBufferLen = 5;\r
-    BufToHexString (StringPtr, &HexStringBufferLen, Buffer, sizeof (UINT16));\r
-    Buffer += sizeof (UINT16);\r
-    StringPtr += 4;\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-\r
-    Extract block config from the array generated by VFR compiler. The name of\r
-  this array is "Vfr + <StorageName> + Default<HexCh>4", e.g. "VfrMyIfrNVDataDefault0000".\r
-\r
-    @param Buffer                - Array generated by VFR compiler.\r
-    @param BlockConfig           - The returned <BlockConfig>\r
-\r
-    @retval EFI_OUT_OF_RESOURCES  - Run out of memory resource.\r
-    @retval EFI_INVALID_PARAMETER - Buffer is NULL or BlockConfig is NULL.\r
-    @retval EFI_SUCCESS           - Operation successful.\r
-\r
-**/\r
-EFI_STATUS\r
-ExtractBlockConfig (\r
-  IN UINT8                        *Buffer,\r
-  OUT CHAR16                      **BlockConfig\r
-  )\r
-{\r
-  UINT32      Length;\r
-  UINT16      Width;\r
-  UINTN       HexStringBufferLen;\r
-  CHAR16      *StringPtr;\r
-  UINT8       *BufferEnd;\r
-  CHAR16      *StringEnd;\r
-  EFI_STATUS  Status;\r
-\r
-  if ((Buffer == NULL) || (BlockConfig == NULL)) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  //\r
-  // Calculate length of AltResp string\r
-  // Format of Default value array is:\r
-  //  Array length | 4-bytes\r
-  //        Offset | 2-bytes\r
-  //        Width  | 2-bytes\r
-  //        Value  | Variable length\r
-  //        Offset | 2-bytes\r
-  //        Width  | 2-bytes\r
-  //        Value  | Variable length\r
-  //        ... ...\r
-  // When value is 1 byte in length, overhead of AltResp string will be maximum,\r
-  //  BlockConfig ::= <&OFFSET=1234&WIDTH=1234&VALUE=12>+\r
-  //                   |   8   | 4  |  7   | 4 |  7  |2|\r
-  // so the maximum length of BlockConfig could be calculated as:\r
-  // (ArrayLength / 5) * (8 + 4 + 7 + 4 + 7 + 2) = ArrayLength * 6.4 < ArrayLength * 7\r
-  //\r
-  CopyMem (&Length, Buffer, sizeof (UINT32));\r
-  BufferEnd = Buffer + Length;\r
-  StringPtr = AllocatePool (Length * 7 * sizeof (CHAR16));\r
-  *BlockConfig = StringPtr;\r
-  if (StringPtr == NULL) {\r
-      return EFI_OUT_OF_RESOURCES;\r
-  }\r
-  StringEnd = StringPtr + (Length * 7);\r
-\r
-  Buffer += sizeof (UINT32);\r
-  while (Buffer < BufferEnd) {\r
-    StrCpy (StringPtr, L"&OFFSET=");\r
-    StringPtr += 8;\r
-\r
-    HexStringBufferLen = 5;\r
-    BufToHexString (StringPtr, &HexStringBufferLen, Buffer, sizeof (UINT16));\r
-    Buffer += sizeof (UINT16);\r
-    StringPtr += 4;\r
-\r
-    StrCpy (StringPtr, L"&WIDTH=");\r
-    StringPtr += 7;\r
-\r
-    HexStringBufferLen = 5;\r
-    BufToHexString (StringPtr, &HexStringBufferLen, Buffer, sizeof (UINT16));\r
-    CopyMem (&Width, Buffer, sizeof (UINT16));\r
-    Buffer += sizeof (UINT16);\r
-    StringPtr += 4;\r
-\r
-    StrCpy (StringPtr, L"&VALUE=");\r
-    StringPtr += 7;\r
-\r
-    HexStringBufferLen = StringEnd - StringPtr;\r
-    Status = BufToHexString (StringPtr, &HexStringBufferLen, Buffer, Width);\r
-    if (EFI_ERROR (Status)) {\r
-      return Status;\r
-    }\r
-    Buffer += Width;\r
-    StringPtr += (Width * 2);\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-    Construct <ConfigAltResp> for a buffer storage.\r
-\r
-    @param ConfigRequest           The Config request string. If set to NULL, all the\r
-                                   configurable elements will be extracted from BlockNameArray.\r
-    @param ConfigAltResp           The returned <ConfigAltResp>.\r
-    @param Progress                On return, points to a character in the Request.\r
-    @param Guid                    GUID of the buffer storage.\r
-    @param Name                    Name of the buffer storage.\r
-    @param DriverHandle            The DriverHandle which is used to invoke HiiDatabase\r
-                                   protocol interface NewPackageList().\r
-    @param BufferStorage           Content of the buffer storage.\r
-    @param BufferStorageSize       Length in bytes of the buffer storage.\r
-    @param BlockNameArray          Array generated by VFR compiler.\r
-    @param NumberAltCfg            Number of Default value array generated by VFR compiler.\r
-                                   The sequential input parameters will be number of\r
-                                   AltCfgId and DefaultValueArray pairs. When set to 0,\r
-                                   there will be no <AltResp>.\r
-\r
-    retval EFI_OUT_OF_RESOURCES  Run out of memory resource.\r
-    retval EFI_INVALID_PARAMETER ConfigAltResp is NULL.\r
-    retval EFI_SUCCESS           Operation successful.\r
-\r
-**/\r
-EFI_STATUS\r
-ConstructConfigAltResp (\r
-  IN  EFI_STRING                  ConfigRequest,  OPTIONAL\r
-  OUT EFI_STRING                  *Progress,\r
-  OUT EFI_STRING                  *ConfigAltResp,\r
-  IN  EFI_GUID                    *Guid,\r
-  IN  CHAR16                      *Name,\r
-  IN  EFI_HANDLE                  *DriverHandle,\r
-  IN  VOID                        *BufferStorage,\r
-  IN  UINTN                       BufferStorageSize,\r
-  IN  VOID                        *BlockNameArray, OPTIONAL\r
-  IN  UINTN                       NumberAltCfg,\r
-  ...\r
-//IN  UINT16                      AltCfgId,\r
-//IN  VOID                        *DefaultValueArray,\r
-  )\r
-{\r
-  EFI_STATUS                      Status;\r
-  CHAR16                          *ConfigHdr;\r
-  CHAR16                          *BlockName;\r
-  CHAR16                          *DescHdr;\r
-  CHAR16                          *StringPtr;\r
-  CHAR16                          **AltCfg;\r
-  UINT16                          AltCfgId;\r
-  VOID                            *DefaultValueArray;\r
-  UINTN                           StrBufferLen;\r
-  EFI_STRING                      ConfigResp;\r
-  EFI_STRING                      TempStr;\r
-  VA_LIST                         Args;\r
-  UINTN                           AltRespLen;\r
-  UINTN                           Index;\r
-  BOOLEAN                         NeedFreeConfigRequest;\r
-  EFI_HII_CONFIG_ROUTING_PROTOCOL *HiiConfigRouting;\r
-  UINTN                           Len;\r
-\r
-  if (ConfigAltResp == NULL) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  //\r
-  // Construct <ConfigHdr> : "GUID=...&NAME=...&PATH=..."\r
-  //\r
-  ConfigHdr = NULL;\r
-  StrBufferLen = 0;\r
-  Status = ConstructConfigHdr (\r
-             ConfigHdr,\r
-             &StrBufferLen,\r
-             Guid,\r
-             Name,\r
-             DriverHandle\r
-             );\r
-  if (Status == EFI_BUFFER_TOO_SMALL) {\r
-    ConfigHdr = AllocateZeroPool (StrBufferLen);\r
-    Status = ConstructConfigHdr (\r
-               ConfigHdr,\r
-               &StrBufferLen,\r
-               Guid,\r
-               Name,\r
-               DriverHandle\r
-               );\r
-  }\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  //\r
-  // Construct <ConfigResp>\r
-  //\r
-  NeedFreeConfigRequest = FALSE;\r
-  if (ConfigRequest == NULL) {\r
-    //\r
-    // If ConfigRequest is set to NULL, export all configurable elements in BlockNameArray\r
-    //\r
-    Status = ExtractBlockName (BlockNameArray, &BlockName);\r
-    if (EFI_ERROR (Status)) {\r
-      return Status;\r
-    }\r
-    \r
-    Len = StrSize (ConfigHdr);\r
-    ConfigRequest = AllocateZeroPool (Len + StrSize (BlockName) - sizeof (CHAR16));\r
-    StrCpy (ConfigRequest, ConfigHdr);\r
-    StrCat (ConfigRequest, BlockName);\r
-    NeedFreeConfigRequest = TRUE;\r
-  }\r
-\r
-  Status = gBS->LocateProtocol (&gEfiHiiConfigRoutingProtocolGuid, NULL, (VOID **) &HiiConfigRouting);\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  Status = HiiConfigRouting->BlockToConfig (\r
-                               HiiConfigRouting,\r
-                               ConfigRequest,\r
-                               BufferStorage,\r
-                               BufferStorageSize,\r
-                               &ConfigResp,\r
-                               (Progress == NULL) ? &TempStr : Progress\r
-                               );\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  //\r
-  // Construct <AltResp>\r
-  //\r
-  DescHdr = AllocateZeroPool (NumberAltCfg * 16 * sizeof (CHAR16));\r
-  StringPtr = DescHdr;\r
-  AltCfg = AllocateZeroPool (NumberAltCfg * sizeof (CHAR16 *));\r
-  AltRespLen = 0;\r
-  VA_START (Args, NumberAltCfg);\r
-  for (Index = 0; Index < NumberAltCfg; Index++) {\r
-    AltCfgId = (UINT16) VA_ARG (Args, UINT16);\r
-    DefaultValueArray = (UINT8 *) VA_ARG (Args, VOID *);\r
-\r
-    //\r
-    // '&' <ConfigHdr>\r
-    //\r
-    AltRespLen += (StrLen (ConfigHdr) + 1);\r
-\r
-    StringPtr = DescHdr + Index * 16;\r
-    StrCpy (StringPtr, L"&ALTCFG=");\r
-    AltRespLen += (8 + sizeof (UINT16) * 2);\r
-\r
-    StrBufferLen = 5;\r
-    BufToHexString (StringPtr + 8, &StrBufferLen, (UINT8 *) &AltCfgId, sizeof (UINT16));\r
-    Status = ExtractBlockConfig (DefaultValueArray, &AltCfg[Index]);\r
-    if (EFI_ERROR (Status)) {\r
-      return Status;\r
-    }\r
-    AltRespLen += StrLen (AltCfg[Index]);\r
-  }\r
-  VA_END (Args);\r
-\r
-  //\r
-  // Generate the final <ConfigAltResp>\r
-  //\r
-  StrBufferLen = (StrLen ((CHAR16 *) ConfigResp) + AltRespLen + 1) * sizeof (CHAR16);\r
-  TempStr = AllocateZeroPool (StrBufferLen);\r
-  *ConfigAltResp = TempStr;\r
-  if (TempStr == NULL) {\r
-    return EFI_OUT_OF_RESOURCES;\r
-  }\r
-\r
-  //\r
-  // <ConfigAltResp> ::= <ConfigResp> ['&' <AltResp>]*\r
-  //\r
-  StrCpy (TempStr, ConfigResp);\r
-  for (Index = 0; Index < NumberAltCfg; Index++) {\r
-    StrCat (TempStr, L"&");\r
-    StrCat (TempStr, ConfigHdr);\r
-    StrCat (TempStr, DescHdr + Index * 16);\r
-    StrCat (TempStr, AltCfg[Index]);\r
-\r
-    gBS->FreePool (AltCfg[Index]);\r
-  }\r
-\r
-  if (NeedFreeConfigRequest) {\r
-    gBS->FreePool (ConfigRequest);\r
-  }\r
-  gBS->FreePool (ConfigHdr);\r
-  gBS->FreePool (ConfigResp);\r
-  gBS->FreePool (DescHdr);\r
-  gBS->FreePool (AltCfg);\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Swap bytes in the buffer. This is a internal function.\r
-\r
-  @param  Buffer                 Binary buffer.\r
-  @param  BufferSize             Size of the buffer in bytes.\r
-\r
-  @return None.\r
-\r
-**/\r
-VOID\r
-SwapBuffer (\r
-  IN OUT UINT8     *Buffer,\r
-  IN UINTN         BufferSize\r
-  )\r
-{\r
-  UINTN  Index;\r
-  UINT8  Temp;\r
-  UINTN  SwapCount;\r
-\r
-  SwapCount = BufferSize / 2;\r
-  for (Index = 0; Index < SwapCount; Index++) {\r
-    Temp = Buffer[Index];\r
-    Buffer[Index] = Buffer[BufferSize - 1 - Index];\r
-    Buffer[BufferSize - 1 - Index] = Temp;\r
-  }\r
-}\r
-\r
-/**\r
-  Converts the unicode character of the string from uppercase to lowercase.\r
-  This is a internal function.\r
-\r
-  @param Str     String to be converted\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-ToLower (\r
-  IN OUT CHAR16    *Str\r
-  )\r
-{\r
-  CHAR16      *Ptr;\r
-  \r
-  for (Ptr = Str; *Ptr != L'\0'; Ptr++) {\r
-    if (*Ptr >= L'A' && *Ptr <= L'Z') {\r
-      *Ptr = (CHAR16) (*Ptr - L'A' + L'a');\r
-    }\r
-  }\r
-}\r
-\r
-\r
-/**\r
-  Converts binary buffer to Unicode string in reversed byte order from BufToHexString().\r
-\r
-  @param  Str                    String for output\r
-  @param  Buffer                 Binary buffer.\r
-  @param  BufferSize             Size of the buffer in bytes.\r
-\r
-  @retval EFI_SUCCESS            The function completed successfully.\r
-  @retval EFI_OUT_OF_RESOURCES   There is no enough available memory space.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-BufInReverseOrderToHexString (\r
-  IN OUT CHAR16    *Str,\r
-  IN UINT8         *Buffer,\r
-  IN UINTN         BufferSize\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-  UINT8       *NewBuffer;\r
-  UINTN       StrBufferLen;\r
-\r
-  NewBuffer = AllocateCopyPool (BufferSize, Buffer);\r
-  if (NewBuffer == NULL) {\r
-    return EFI_OUT_OF_RESOURCES;\r
-  }\r
-  SwapBuffer (NewBuffer, BufferSize);\r
-\r
-  StrBufferLen = BufferSize * sizeof (CHAR16) + 1;\r
-  Status = BufToHexString (Str, &StrBufferLen, NewBuffer, BufferSize);\r
-\r
-  FreePool (NewBuffer);\r
-  //\r
-  // Convert the uppercase to lowercase since <HexAf> is defined in lowercase format.\r
-  //\r
-  ToLower (Str);\r
-\r
-  return Status;\r
-}\r
-\r
-\r
-/**\r
-  Converts Hex String to binary buffer in reversed byte order from HexStringToBuf().\r
-\r
-  @param  Buffer                 Pointer to buffer that receives the data.\r
-  @param  BufferSize             Length in bytes of the buffer to hold converted\r
-                                 data. If routine return with EFI_SUCCESS,\r
-                                 containing length of converted data. If routine\r
-                                 return with EFI_BUFFER_TOO_SMALL, containg length\r
-                                 of buffer desired.\r
-  @param  Str                    String to be converted from.\r
-\r
-  @retval EFI_SUCCESS            The function completed successfully.\r
-  @retval RETURN_BUFFER_TOO_SMALL   The input BufferSize is too small to hold the output. BufferSize\r
-                                 will be updated to the size required for the converstion.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-HexStringToBufInReverseOrder (\r
-  IN OUT UINT8         *Buffer,\r
-  IN OUT UINTN         *BufferSize,\r
-  IN CHAR16            *Str\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-  UINTN       ConvertedStrLen;\r
-\r
-  ConvertedStrLen = 0;\r
-  Status = HexStringToBuf (Buffer, BufferSize, Str, &ConvertedStrLen);\r
-  if (!EFI_ERROR (Status)) {\r
-    SwapBuffer (Buffer, (ConvertedStrLen + 1) / 2);\r
-  }\r
-\r
-  return Status;\r
-}\r
-\r
-/**\r
-  Convert binary representation Config string (e.g. "0041004200430044") to the\r
-  original string (e.g. "ABCD"). Config string appears in <ConfigHdr> (i.e.\r
-  "&NAME=<string>"), or Name/Value pair in <ConfigBody> (i.e. "label=<string>").\r
-\r
-  @param UnicodeString  Original Unicode string.\r
-  @param StrBufferLen   On input: Length in bytes of buffer to hold the Unicode string.\r
-                                    Includes tailing '\0' character.\r
-                                    On output:\r
-                                      If return EFI_SUCCESS, containing length of Unicode string buffer.\r
-                                      If return EFI_BUFFER_TOO_SMALL, containg length of string buffer desired.\r
-  @param ConfigString   Binary representation of Unicode String, <string> := (<HexCh>4)+\r
-\r
-  @retval EFI_SUCCESS          Operation completes successfully.\r
-  @retval EFI_BUFFER_TOO_SMALL The string buffer is too small.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-ConfigStringToUnicode (\r
-  IN OUT CHAR16                *UnicodeString,\r
-  IN OUT UINTN                 *StrBufferLen,\r
-  IN CHAR16                    *ConfigString\r
-  )\r
-{\r
-  UINTN       Index;\r
-  UINTN       Len;\r
-  UINTN       BufferSize;\r
-  CHAR16      BackupChar;\r
-\r
-  Len = StrLen (ConfigString) / 4;\r
-  BufferSize = (Len + 1) * sizeof (CHAR16);\r
-\r
-  if (*StrBufferLen < BufferSize) {\r
-    *StrBufferLen = BufferSize;\r
-    return EFI_BUFFER_TOO_SMALL;\r
-  }\r
-\r
-  *StrBufferLen = BufferSize;\r
-\r
-  for (Index = 0; Index < Len; Index++) {\r
-    BackupChar = ConfigString[4];\r
-    ConfigString[4] = L'\0';\r
-\r
-    HexStringToBuf ((UINT8 *) UnicodeString, &BufferSize, ConfigString, NULL);\r
-\r
-    ConfigString[4] = BackupChar;\r
-\r
-    ConfigString += 4;\r
-    UnicodeString += 1;\r
-  }\r
-\r
-  //\r
-  // Add tailing '\0' character\r
-  //\r
-  *UnicodeString = L'\0';\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Convert Unicode string to binary representation Config string, e.g.\r
-  "ABCD" => "0041004200430044". Config string appears in <ConfigHdr> (i.e.\r
-  "&NAME=<string>"), or Name/Value pair in <ConfigBody> (i.e. "label=<string>").\r
-\r
-  @param ConfigString   Binary representation of Unicode String, <string> := (<HexCh>4)+\r
-  @param  StrBufferLen  On input: Length in bytes of buffer to hold the Unicode string.\r
-                                    Includes tailing '\0' character.\r
-                                    On output:\r
-                                      If return EFI_SUCCESS, containing length of Unicode string buffer.\r
-                                      If return EFI_BUFFER_TOO_SMALL, containg length of string buffer desired.\r
-  @param  UnicodeString  Original Unicode string.\r
-\r
-  @retval EFI_SUCCESS           Operation completes successfully.\r
-  @retval EFI_BUFFER_TOO_SMALL  The string buffer is too small.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-UnicodeToConfigString (\r
-  IN OUT CHAR16                *ConfigString,\r
-  IN OUT UINTN                 *StrBufferLen,\r
-  IN CHAR16                    *UnicodeString\r
-  )\r
-{\r
-  UINTN       Index;\r
-  UINTN       Len;\r
-  UINTN       BufferSize;\r
-  CHAR16      *String;\r
-\r
-  Len = StrLen (UnicodeString);\r
-  BufferSize = (Len * 4 + 1) * sizeof (CHAR16);\r
-\r
-  if (*StrBufferLen < BufferSize) {\r
-    *StrBufferLen = BufferSize;\r
-    return EFI_BUFFER_TOO_SMALL;\r
-  }\r
-\r
-  *StrBufferLen = BufferSize;\r
-  String        = ConfigString;\r
-\r
-  for (Index = 0; Index < Len; Index++) {\r
-    BufToHexString (ConfigString, &BufferSize, (UINT8 *) UnicodeString, 2);\r
-\r
-    ConfigString += 4;\r
-    UnicodeString += 1;\r
-  }\r
-\r
-  //\r
-  // Add tailing '\0' character\r
-  //\r
-  *ConfigString = L'\0';\r
-\r
-  //\r
-  // Convert the uppercase to lowercase since <HexAf> is defined in lowercase format.\r
-  //\r
-  ToLower (String);  \r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Construct <ConfigHdr> using routing information GUID/NAME/PATH.\r
-\r
-  @param  ConfigHdr              Pointer to the ConfigHdr string.\r
-  @param  StrBufferLen           On input: Length in bytes of buffer to hold the\r
-                                 ConfigHdr string. Includes tailing '\0' character.\r
-                                 On output: If return EFI_SUCCESS, containing\r
-                                 length of ConfigHdr string buffer. If return\r
-                                 EFI_BUFFER_TOO_SMALL, containg length of string\r
-                                 buffer desired.\r
-  @param  Guid                   Routing information: GUID.\r
-  @param  Name                   Routing information: NAME.\r
-  @param  DriverHandle           Driver handle which contains the routing\r
-                                 information: PATH.\r
-\r
-  @retval EFI_SUCCESS            Operation completes successfully.\r
-  @retval EFI_BUFFER_TOO_SMALL   The ConfigHdr string buffer is too small.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-ConstructConfigHdr (\r
-  IN OUT CHAR16                *ConfigHdr,\r
-  IN OUT UINTN                 *StrBufferLen,\r
-  IN CONST EFI_GUID            *Guid,\r
-  IN CHAR16                    *Name, OPTIONAL\r
-  IN EFI_HANDLE                *DriverHandle\r
-  )\r
-{\r
-  EFI_STATUS                Status;\r
-  UINTN                     NameStrLen;\r
-  UINTN                     DevicePathSize;\r
-  UINTN                     BufferSize;\r
-  CHAR16                    *StrPtr;\r
-  EFI_DEVICE_PATH_PROTOCOL  *DevicePath;\r
-\r
-  if (Name == NULL) {\r
-    //\r
-    // There will be no "NAME" in <ConfigHdr> for  Name/Value storage\r
-    //\r
-    NameStrLen = 0;\r
-  } else {\r
-    //\r
-    // For buffer storage\r
-    //\r
-    NameStrLen = StrLen (Name);\r
-  }\r
-\r
-  //\r
-  // Retrieve DevicePath Protocol associated with this HiiPackageList\r
-  //\r
-  Status = gBS->HandleProtocol (\r
-                  DriverHandle,\r
-                  &gEfiDevicePathProtocolGuid,\r
-                  (VOID **) &DevicePath\r
-                  );\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  DevicePathSize = GetDevicePathSize (DevicePath);\r
-\r
-  //\r
-  // GUID=<HexCh>32&NAME=<Char>NameStrLen&PATH=<HexChar>DevicePathStrLen <NULL>\r
-  // | 5  |   32   |  6  |  NameStrLen*4 |  6  |    DevicePathStrLen    | 1 |\r
-  //\r
-  BufferSize = (5 + 32 + 6 + NameStrLen * 4 + 6 + DevicePathSize * 2 + 1) * sizeof (CHAR16);\r
-  if (*StrBufferLen < BufferSize) {\r
-    *StrBufferLen = BufferSize;\r
-    return EFI_BUFFER_TOO_SMALL;\r
-  }\r
-\r
-  *StrBufferLen = BufferSize;\r
-\r
-  StrPtr = ConfigHdr;\r
-\r
-  StrCpy (StrPtr, L"GUID=");\r
-  StrPtr += 5;\r
-  BufInReverseOrderToHexString (StrPtr, (UINT8 *) Guid, sizeof (EFI_GUID));\r
-  StrPtr += 32;\r
-\r
-  //\r
-  // Convert name string, e.g. name "ABCD" => "&NAME=0041004200430044"\r
-  //\r
-  StrCpy (StrPtr, L"&NAME=");\r
-  StrPtr += 6;\r
-  if (Name != NULL) {\r
-    BufferSize = (NameStrLen * 4 + 1) * sizeof (CHAR16);\r
-    UnicodeToConfigString (StrPtr, &BufferSize, Name);\r
-    StrPtr += (NameStrLen * 4);\r
-  }\r
-\r
-  StrCpy (StrPtr, L"&PATH=");\r
-  StrPtr += 6;\r
-  BufInReverseOrderToHexString (StrPtr, (UINT8 *) DevicePath, DevicePathSize);\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Determines if the Routing data (Guid and Name) is correct in <ConfigHdr>.\r
-\r
-  @param ConfigString  Either <ConfigRequest> or <ConfigResp>.\r
-  @param StorageGuid   GUID of the storage.\r
-  @param StorageName   Name of the stoarge.\r
-\r
-  @retval TRUE         Routing information is correct in ConfigString.\r
-  @retval FALSE        Routing information is incorrect in ConfigString.\r
-\r
-**/\r
-BOOLEAN\r
-IsConfigHdrMatch (\r
-  IN EFI_STRING                ConfigString,\r
-  IN EFI_GUID                  *StorageGuid, OPTIONAL\r
-  IN CHAR16                    *StorageName  OPTIONAL\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-  BOOLEAN     Match;\r
-  EFI_GUID    Guid;\r
-  CHAR16      *Name;\r
-  CHAR16      *StrPtr;\r
-  UINTN       BufferSize;\r
-\r
-  //\r
-  // <ConfigHdr> ::=\r
-  // GUID=<HexCh>32&NAME=<Char>NameStrLen&PATH=<HexChar>DevicePathStrLen <NULL>\r
-  // | 5  |   32   |  6  |  NameStrLen*4 |  6  |    DevicePathStrLen    | 1 |\r
-  //\r
-  if (StrLen (ConfigString) <= (5 + 32 + 6)) {\r
-    return FALSE;\r
-  }\r
-\r
-  //\r
-  // Compare GUID\r
-  //\r
-  if (StorageGuid != NULL) {\r
-\r
-    StrPtr = ConfigString + 5 + 32;\r
-    if (*StrPtr != L'&') {\r
-      return FALSE;\r
-    }\r
-    *StrPtr = L'\0';\r
-\r
-    BufferSize = sizeof (EFI_GUID);\r
-    Status = HexStringToBufInReverseOrder (\r
-               (UINT8 *) &Guid,\r
-               &BufferSize,\r
-               ConfigString + 5\r
-               );\r
-    *StrPtr = L'&';\r
-\r
-    if (EFI_ERROR (Status)) {\r
-      return FALSE;\r
-    }\r
-\r
-    if (!CompareGuid (&Guid, StorageGuid)) {\r
-      return FALSE;\r
-    }\r
-  }\r
-\r
-  //\r
-  // Compare Name\r
-  //\r
-  Match = TRUE;\r
-  if (StorageName != NULL) {\r
-    StrPtr = ConfigString + 5 + 32 + 6;\r
-    while (*StrPtr != L'\0' && *StrPtr != L'&') {\r
-      StrPtr++;\r
-    }\r
-    if (*StrPtr != L'&') {\r
-      return FALSE;\r
-    }\r
-\r
-    *StrPtr = L'\0';\r
-    BufferSize = (((UINTN) StrPtr) - ((UINTN) &ConfigString[5 + 32 + 6])) / 4 + sizeof (CHAR16);\r
-    Name = AllocatePool (BufferSize);\r
-    ASSERT (Name != NULL);\r
-    Status = ConfigStringToUnicode (\r
-               Name,\r
-               &BufferSize,\r
-               ConfigString + 5 + 32 + 6\r
-               );\r
-    *StrPtr = L'&';\r
-\r
-    if (EFI_ERROR (Status) || (StrCmp (Name, StorageName) != 0)) {\r
-      Match = FALSE;\r
-    }\r
-    gBS->FreePool (Name);\r
-  }\r
-\r
-  return Match;\r
-}\r
-\r
-/**\r
-  Search BlockName "&OFFSET=Offset&WIDTH=Width" in a string.\r
-\r
-  @param  String                 The string to be searched in.\r
-  @param  Offset                 Offset in BlockName.\r
-  @param  Width                  Width in BlockName.\r
-\r
-  @retval TRUE                   Block name found.\r
-  @retval FALSE                  Block name not found.\r
-\r
-**/\r
-BOOLEAN\r
-EFIAPI\r
-FindBlockName (\r
-  IN OUT CHAR16                *String,\r
-  IN UINTN                     Offset,\r
-  IN UINTN                     Width\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-  UINTN       Data;\r
-  UINTN       BufferSize;\r
-  UINTN       ConvertedStrLen;\r
-\r
-  while ((String = StrStr (String, L"&OFFSET=")) != NULL) {\r
-    //\r
-    // Skip '&OFFSET='\r
-    //\r
-    String = String + 8;\r
-\r
-    Data = 0;\r
-    BufferSize = sizeof (UINTN);\r
-    Status = HexStringToBuf ((UINT8 *) &Data, &BufferSize, String, &ConvertedStrLen);\r
-    if (EFI_ERROR (Status)) {\r
-      return FALSE;\r
-    }\r
-    String = String + ConvertedStrLen;\r
-\r
-    if (Data != Offset) {\r
-      continue;\r
-    }\r
-\r
-    if (StrnCmp (String, L"&WIDTH=", 7) != 0) {\r
-      return FALSE;\r
-    }\r
-    String = String + 7;\r
-\r
-    Data = 0;\r
-    BufferSize = sizeof (UINTN);\r
-    Status = HexStringToBuf ((UINT8 *) &Data, &BufferSize, String, &ConvertedStrLen);\r
-    if (EFI_ERROR (Status)) {\r
-      return FALSE;\r
-    }\r
-    if (Data == Width) {\r
-      return TRUE;\r
-    }\r
-\r
-    String = String + ConvertedStrLen;\r
-  }\r
-\r
-  return FALSE;\r
-}\r
-\r
-\r
-/**\r
-  This routine is invoked by ConfigAccess.Callback() to retrived uncommitted data from Form Browser.\r
-\r
-  @param  VariableGuid           An optional field to indicate the target variable\r
-                                 GUID name to use.\r
-  @param  VariableName           An optional field to indicate the target\r
-                                 human-readable variable name.\r
-  @param  BufferSize             On input: Length in bytes of buffer to hold\r
-                                 retrived data. On output: If return\r
-                                 EFI_BUFFER_TOO_SMALL, containg length of buffer\r
-                                 desired.\r
-  @param  Buffer                 Buffer to hold retrived data.\r
-\r
-  @retval EFI_SUCCESS            Operation completes successfully.\r
-  @retval EFI_BUFFER_TOO_SMALL   The intput buffer is too small.\r
-  @retval EFI_OUT_OF_RESOURCES   There is no enough available memory space.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-GetBrowserData (\r
-  IN CONST EFI_GUID              *VariableGuid, OPTIONAL\r
-  IN CONST CHAR16                *VariableName, OPTIONAL\r
-  IN OUT UINTN                   *BufferSize,\r
-  IN OUT UINT8                   *Buffer\r
-  )\r
-{\r
-  EFI_STATUS                      Status;\r
-  CONST CHAR16                    *ConfigHdr;\r
-  CHAR16                          *ConfigResp;\r
-  CHAR16                          *StringPtr;\r
-  UINTN                           HeaderLen;\r
-  UINTN                           BufferLen;\r
-  CHAR16                          *Progress;\r
-\r
-  //\r
-  // Locate protocols for use\r
-  //\r
-  Status = LocateFormBrowser2Protocols ();\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  //\r
-  // Retrive formset storage data from Form Browser\r
-  //\r
-  ConfigHdr = mFakeConfigHdr;\r
-  HeaderLen = StrLen (ConfigHdr);\r
-  \r
-  //\r
-  // First try allocate 0x4000 buffer for the formet storage data.\r
-  //\r
-  BufferLen = 0x4000;\r
-  ConfigResp = AllocateZeroPool (BufferLen + HeaderLen);\r
-  if (ConfigResp == NULL) {\r
-    BufferLen = 0;\r
-  }\r
-\r
-  StringPtr = ConfigResp + HeaderLen;\r
-  *StringPtr = L'&';\r
-  StringPtr++;\r
-\r
-  Status = mFormBrowser2->BrowserCallback (\r
-                           mFormBrowser2,\r
-                           &BufferLen,\r
-                           StringPtr,\r
-                           TRUE,\r
-                           VariableGuid,\r
-                           VariableName\r
-                           );\r
-  if (Status == EFI_BUFFER_TOO_SMALL) {\r
-    if (ConfigResp != NULL) {\r
-      FreePool (ConfigResp);\r
-    }\r
-\r
-    ConfigResp = AllocateZeroPool (BufferLen + HeaderLen);\r
-    if (ConfigResp == NULL) {\r
-      return EFI_OUT_OF_RESOURCES;\r
-    }\r
-\r
-    StringPtr = ConfigResp + HeaderLen;\r
-    *StringPtr = L'&';\r
-    StringPtr++;\r
-\r
-    Status = mFormBrowser2->BrowserCallback (\r
-                             mFormBrowser2,\r
-                             &BufferLen,\r
-                             StringPtr,\r
-                             TRUE,\r
-                             VariableGuid,\r
-                             VariableName\r
-                             );\r
-  }\r
-  if (EFI_ERROR (Status)) {\r
-    FreePool (ConfigResp);\r
-    return Status;\r
-  }\r
-  CopyMem (ConfigResp, ConfigHdr, HeaderLen * sizeof (UINT16));\r
-\r
-  //\r
-  // Convert <ConfigResp> to buffer data\r
-  //\r
-  Status = mIfrSupportLibHiiConfigRouting->ConfigToBlock (\r
-                               mIfrSupportLibHiiConfigRouting,\r
-                               ConfigResp,\r
-                               Buffer,\r
-                               BufferSize,\r
-                               &Progress\r
-                               );\r
-  FreePool (ConfigResp);\r
-\r
-  return Status;\r
-}\r
-\r
-\r
-/**\r
-  This routine is invoked by ConfigAccess.Callback() to update uncommitted data of Form Browser.\r
-\r
-  @param  VariableGuid           An optional field to indicate the target variable\r
-                                 GUID name to use.\r
-  @param  VariableName           An optional field to indicate the target\r
-                                 human-readable variable name.\r
-  @param  BufferSize             Length in bytes of buffer to hold retrived data.\r
-  @param  Buffer                 Buffer to hold retrived data.\r
-  @param  RequestElement         An optional field to specify which part of the\r
-                                 buffer data will be send back to Browser. If NULL,\r
-                                 the whole buffer of data will be committed to\r
-                                 Browser. <RequestElement> ::=\r
-                                 &OFFSET=<Number>&WIDTH=<Number>*\r
-\r
-  @retval EFI_SUCCESS            Operation completes successfully.\r
-  @retval EFI_OUT_OF_RESOURCES   There is no enough available memory space.\r
-  @retval Other                  Updating Browser uncommitted data failed.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-SetBrowserData (\r
-  IN CONST EFI_GUID          *VariableGuid, OPTIONAL\r
-  IN CONST CHAR16            *VariableName, OPTIONAL\r
-  IN UINTN                   BufferSize,\r
-  IN CONST UINT8             *Buffer,\r
-  IN CONST CHAR16            *RequestElement  OPTIONAL\r
-  )\r
-{\r
-  EFI_STATUS                      Status;\r
-  CONST CHAR16                    *ConfigHdr;\r
-  CHAR16                          *ConfigResp;\r
-  CHAR16                          *StringPtr;\r
-  UINTN                           HeaderLen;\r
-  UINTN                           BufferLen;\r
-  CHAR16                          *Progress;\r
-  CHAR16                          BlockName[33];\r
-  CHAR16                          *ConfigRequest;\r
-  CONST CHAR16                    *Request;\r
-\r
-  //\r
-  // Locate protocols for use\r
-  //\r
-  Status = LocateFormBrowser2Protocols ();\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  //\r
-  // Prepare <ConfigRequest>\r
-  //\r
-  ConfigHdr = mFakeConfigHdr;\r
-  HeaderLen = StrLen (ConfigHdr);\r
-\r
-  if (RequestElement == NULL) {\r
-    //\r
-    // RequestElement not specified, use "&OFFSET=0&WIDTH=<BufferSize>" as <BlockName>\r
-    //\r
-    BlockName[0] = L'\0';\r
-    StrCpy (BlockName, L"&OFFSET=0&WIDTH=");\r
-\r
-    //\r
-    // String lenghth of L"&OFFSET=0&WIDTH=" is 16\r
-    //\r
-    StringPtr = BlockName + 16;\r
-    BufferLen = sizeof (BlockName) - (16 * sizeof (CHAR16));\r
-    BufToHexString (StringPtr, &BufferLen, (UINT8 *) &BufferSize, sizeof (UINTN));\r
-\r
-    Request = BlockName;\r
-  } else {\r
-    Request = RequestElement;\r
-  }\r
-\r
-  BufferLen = HeaderLen * sizeof (CHAR16) + StrSize (Request);\r
-  ConfigRequest = AllocateZeroPool (BufferLen);\r
-  if (ConfigRequest == NULL) {\r
-    return EFI_OUT_OF_RESOURCES;\r
-  }\r
-\r
-  CopyMem (ConfigRequest, ConfigHdr, HeaderLen * sizeof (CHAR16));\r
-  StringPtr = ConfigRequest + HeaderLen;\r
-  StrCpy (StringPtr, Request);\r
-\r
-  //\r
-  // Convert buffer to <ConfigResp>\r
-  //\r
-  Status = mIfrSupportLibHiiConfigRouting->BlockToConfig (\r
-                                mIfrSupportLibHiiConfigRouting,\r
-                                ConfigRequest,\r
-                                Buffer,\r
-                                BufferSize,\r
-                                &ConfigResp,\r
-                                &Progress\r
-                                );\r
-  if (EFI_ERROR (Status)) {\r
-    FreePool (ConfigRequest);\r
-    return Status;\r
-  }\r
-\r
-  //\r
-  // Skip <ConfigHdr> and '&'\r
-  //\r
-  StringPtr = ConfigResp + HeaderLen + 1;\r
-\r
-  //\r
-  // Change uncommitted data in Browser\r
-  //\r
-  Status = mFormBrowser2->BrowserCallback (\r
-                           mFormBrowser2,\r
-                           &BufferSize,\r
-                           StringPtr,\r
-                           FALSE,\r
-                           VariableGuid,\r
-                           VariableName\r
-                           );\r
-  FreePool (ConfigRequest);\r
-  return Status;\r
-}\r
diff --git a/MdePkg/Library/UefiIfrSupportLib/UefiIfrLibraryInternal.h b/MdePkg/Library/UefiIfrSupportLib/UefiIfrLibraryInternal.h
deleted file mode 100644 (file)
index 43897b9..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/** @file\r
-Utility functions which helps in opcode creation, HII configuration string manipulations, \r
-pop up window creations, setup browser persistence data set and get.\r
-\r
-Copyright (c) 2007 - 2008, 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
-\r
-**/\r
-\r
-#ifndef _IFRLIBRARY_INTERNAL_H_\r
-#define _IFRLIBRARY_INTERNAL_H_\r
-\r
-\r
-#include <Uefi.h>\r
-\r
-#include <Protocol/DevicePath.h>\r
-#include <Protocol/HiiConfigRouting.h>\r
-#include <Protocol/FormBrowser2.h>\r
-\r
-#include <Library/DebugLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/BaseLib.h>\r
-#include <Library/DevicePathLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-#include <Library/IfrSupportLib.h>\r
-\r
-\r
-#endif\r
-\r
diff --git a/MdePkg/Library/UefiIfrSupportLib/UefiIfrOpCodeCreation.c b/MdePkg/Library/UefiIfrSupportLib/UefiIfrOpCodeCreation.c
deleted file mode 100644 (file)
index 9b48a27..0000000
+++ /dev/null
@@ -1,891 +0,0 @@
-/** @file\r
-  Library Routines to create IFR independent of string data - assume tokens already exist\r
-  Primarily to be used for exporting op-codes at a label in pre-defined forms.\r
-\r
-\r
-Copyright (c) 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
-\r
-**/\r
-\r
-#include "UefiIfrLibraryInternal.h"\r
-\r
-/**\r
-  Check if the input question flags is a valid value.\r
-  The valid combination of question flags includes\r
-  EFI_IFR_FLAG_READ_ONLY | EFI_IFR_FLAG_CALLBACK | EFI_IFR_FLAG_RESET_REQUIRED | EFI_IFR_FLAG_OPTIONS_ONLY.\r
-\r
-  @param Flags The question flags to check.\r
-\r
-  @retval TRUE  If the question flag is a valid combination.\r
-  @retval FALSE If the question flag is an invalid combination.\r
-  \r
-**/\r
-BOOLEAN\r
-IsValidQuestionFlags (\r
-  IN UINT8                   Flags\r
-  )\r
-{\r
-  return (BOOLEAN) (((Flags & (~QUESTION_FLAGS)) != 0) ? FALSE : TRUE);\r
-}\r
-\r
-/**\r
-  Check if the input value type is a valid type.\r
-  The valid value type is smaller or equal than EFI_IFR_TYPE_OTHER.\r
-\r
-  @param Type   The value type to check.\r
-\r
-  @retval TRUE  If the value type is valid.\r
-  @retval FALSE If the value type is invalid.\r
-  \r
-**/\r
-BOOLEAN\r
-IsValidValueType (\r
-  IN UINT8                   Type\r
-  )\r
-{\r
-  return (BOOLEAN) ((Type <= EFI_IFR_TYPE_OTHER) ? TRUE : FALSE);\r
-}\r
-\r
-/**\r
-  Check if the input numeric flags is a valid value.\r
-\r
-  @param Flags The numeric flags to check.\r
-\r
-  @retval TRUE  If the numeric flags is valid.\r
-  @retval FALSE If the numeric flags is invalid.\r
-  \r
-**/\r
-BOOLEAN\r
-IsValidNumricFlags (\r
-  IN UINT8                   Flags\r
-  )\r
-{\r
-  if ((Flags & ~(EFI_IFR_NUMERIC_SIZE | EFI_IFR_DISPLAY)) != 0) {\r
-    return FALSE;\r
-  }\r
-\r
-  if ((Flags & EFI_IFR_DISPLAY) > EFI_IFR_DISPLAY_UINT_HEX) {\r
-    return FALSE;\r
-  }\r
-\r
-  return TRUE;\r
-}\r
-\r
-/**\r
-  Check if the checkbox flags is a valid value.\r
-\r
-  @param Flags The checkbox flags to check.\r
-\r
-  @retval TRUE  If the checkbox flags is valid.\r
-  @retval FALSE If the checkbox flags is invalid.\r
-  \r
-**/\r
-BOOLEAN\r
-IsValidCheckboxFlags (\r
-  IN UINT8                   Flags\r
-  )\r
-{\r
-  return (BOOLEAN) ((Flags <= EFI_IFR_CHECKBOX_DEFAULT_MFG) ? TRUE : FALSE);\r
-}\r
-\r
-/**\r
-  Create EFI_IFR_END_OP opcode.\r
-\r
-  If Data is NULL or Data->Data is NULL, then ASSERT.\r
-\r
-  @param  Data                   Destination for the created opcode binary\r
-\r
-  @retval EFI_SUCCESS            Opcode is created successfully.\r
-  @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CreateEndOpCode (\r
-  IN OUT EFI_HII_UPDATE_DATA *Data\r
-  )\r
-{\r
-  EFI_IFR_END                 End;\r
-  UINT8                       *LocalBuffer;\r
-\r
-  ASSERT (Data != NULL && Data->Data != NULL);\r
-\r
-  if (Data->Offset + sizeof (EFI_IFR_END) > Data->BufferSize) {\r
-    return EFI_BUFFER_TOO_SMALL;\r
-  }\r
-\r
-  End.Header.Length  = sizeof (EFI_IFR_END);\r
-  End.Header.OpCode  = EFI_IFR_END_OP;\r
-  End.Header.Scope   = 0;\r
-\r
-  LocalBuffer = (UINT8 *) Data->Data + Data->Offset;\r
-  //\r
-  // CopyMem is used for EFI_IFR_END to cover the unaligned address access.\r
-  //\r
-  CopyMem (LocalBuffer, &End, sizeof (EFI_IFR_END));\r
-  Data->Offset += sizeof (EFI_IFR_END);\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Create EFI_IFR_DEFAULT_OP opcode.\r
-\r
-  If Data is NULL or Data->Data is NULL, then ASSERT.\r
-\r
-  @param  Value                  Value for the default\r
-  @param  Type                   Type for the default\r
-  @param  Data                   Destination for the created opcode binary\r
-\r
-  @retval EFI_SUCCESS            Opcode is created successfully.\r
-  @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
-  @retval EFI_INVALID_PARAMETER The type is not valid.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CreateDefaultOpCode (\r
-  IN     EFI_IFR_TYPE_VALUE  *Value,\r
-  IN     UINT8               Type,\r
-  IN OUT EFI_HII_UPDATE_DATA *Data\r
-  )\r
-{\r
-  EFI_IFR_DEFAULT            Default;\r
-  UINT8                      *LocalBuffer;\r
-\r
-  ASSERT (Data != NULL && Data->Data != NULL);\r
-\r
-  if ((Value == NULL) || !IsValidValueType (Type)) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  if (Data->Offset + sizeof (EFI_IFR_DEFAULT) > Data->BufferSize) {\r
-    return EFI_BUFFER_TOO_SMALL;\r
-  }\r
-\r
-  Default.Header.OpCode = EFI_IFR_DEFAULT_OP;\r
-  Default.Header.Length = sizeof (EFI_IFR_DEFAULT);\r
-  Default.Header.Scope  = 0;\r
-  Default.Type          = Type;\r
-  Default.DefaultId     = EFI_HII_DEFAULT_CLASS_STANDARD;\r
-  CopyMem (&Default.Value, Value, sizeof(EFI_IFR_TYPE_VALUE));\r
-\r
-  LocalBuffer = (UINT8 *) Data->Data + Data->Offset;\r
-  //\r
-  // CopyMem is used for EFI_IFR_DEFAULT to cover the unaligned address access.\r
-  //\r
-  CopyMem (LocalBuffer, &Default, sizeof (EFI_IFR_DEFAULT));\r
-  Data->Offset += sizeof (EFI_IFR_DEFAULT);\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Create EFI_IFR_ACTION_OP opcode.\r
-\r
-  If Data is NULL or Data->Data is NULL, then ASSERT.\r
-\r
-  @param  QuestionId             Question ID\r
-  @param  Prompt                 String ID for Prompt\r
-  @param  Help                   String ID for Help\r
-  @param  QuestionFlags          Flags in Question Header\r
-  @param  QuestionConfig         String ID for configuration\r
-  @param  Data                   Destination for the created opcode binary\r
-\r
-  @retval EFI_SUCCESS            Opcode is created successfully.\r
-  @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
-  @retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CreateActionOpCode (\r
-  IN     EFI_QUESTION_ID      QuestionId,\r
-  IN     EFI_STRING_ID        Prompt,\r
-  IN     EFI_STRING_ID        Help,\r
-  IN     UINT8                QuestionFlags,\r
-  IN     EFI_STRING_ID        QuestionConfig,\r
-  IN OUT EFI_HII_UPDATE_DATA  *Data\r
-  )\r
-{\r
-  EFI_IFR_ACTION              Action;\r
-  UINT8                       *LocalBuffer;\r
-\r
-  ASSERT (Data != NULL && Data->Data != NULL);\r
-\r
-  if (!IsValidQuestionFlags (QuestionFlags)) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  if (Data->Offset + sizeof (EFI_IFR_ACTION) > Data->BufferSize) {\r
-    return EFI_BUFFER_TOO_SMALL;\r
-  }\r
-\r
-  Action.Header.OpCode          = EFI_IFR_ACTION_OP;\r
-  Action.Header.Length          = sizeof (EFI_IFR_ACTION);\r
-  Action.Header.Scope           = 0;\r
-  Action.Question.QuestionId    = QuestionId;\r
-  Action.Question.Header.Prompt = Prompt;\r
-  Action.Question.Header.Help   = Help;\r
-  Action.Question.VarStoreId    = INVALID_VARSTORE_ID;\r
-  Action.Question.Flags         = QuestionFlags;\r
-  Action.QuestionConfig         = QuestionConfig;\r
-\r
-  LocalBuffer = (UINT8 *) Data->Data + Data->Offset;\r
-  //\r
-  // CopyMem is used for EFI_IFR_ACTION to cover the unaligned address access.\r
-  //\r
-  CopyMem (LocalBuffer, &Action, sizeof (EFI_IFR_ACTION));\r
-  Data->Offset += sizeof (EFI_IFR_ACTION);\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Create EFI_IFR_SUBTITLE_OP opcode.\r
-\r
-  If Data is NULL or Data->Data is NULL, then ASSERT.\r
-\r
-  @param  Prompt                 String ID for Prompt\r
-  @param  Help                   String ID for Help\r
-  @param  Flags                  Subtitle opcode flags\r
-  @param  Scope                  Subtitle Scope bit\r
-  @param  Data                   Destination for the created opcode binary\r
-\r
-  @retval EFI_SUCCESS            Opcode is created successfully.\r
-  @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
-  \r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CreateSubTitleOpCode (\r
-  IN      EFI_STRING_ID       Prompt,\r
-  IN      EFI_STRING_ID       Help,\r
-  IN      UINT8               Flags,\r
-  IN      UINT8               Scope,\r
-  IN OUT EFI_HII_UPDATE_DATA  *Data\r
-  )\r
-{\r
-  EFI_IFR_SUBTITLE            Subtitle;\r
-  UINT8                       *LocalBuffer;\r
-\r
-  ASSERT (Data != NULL && Data->Data != NULL);\r
-\r
-  if (Data->Offset + sizeof (EFI_IFR_SUBTITLE) > Data->BufferSize) {\r
-    return EFI_BUFFER_TOO_SMALL;\r
-  }\r
-\r
-  Subtitle.Header.OpCode    = EFI_IFR_SUBTITLE_OP;\r
-  Subtitle.Header.Length    = sizeof (EFI_IFR_SUBTITLE);\r
-  Subtitle.Header.Scope     = Scope;\r
-  Subtitle.Statement.Prompt = Prompt;\r
-  Subtitle.Statement.Help   = Help;\r
-  Subtitle.Flags            = Flags;\r
-\r
-  LocalBuffer = (UINT8 *) Data->Data + Data->Offset;\r
-  //\r
-  // CopyMem is used for EFI_IFR_SUBTITLE to cover the unaligned address access.\r
-  //\r
-  CopyMem (LocalBuffer, &Subtitle, sizeof (EFI_IFR_SUBTITLE));\r
-  Data->Offset += sizeof (EFI_IFR_SUBTITLE);\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-\r
-/**\r
-  Create EFI_IFR_TEXT_OP opcode.\r
-\r
-  If Data is NULL or Data->Data is NULL, then ASSERT.\r
-\r
-  @param  Prompt                 String ID for Prompt\r
-  @param  Help                   String ID for Help\r
-  @param  TextTwo                String ID for text two\r
-  @param  Data                   Destination for the created opcode binary\r
-\r
-  @retval EFI_SUCCESS            Opcode is created successfully.\r
-  @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CreateTextOpCode (\r
-  IN     EFI_STRING_ID        Prompt,\r
-  IN     EFI_STRING_ID        Help,\r
-  IN     EFI_STRING_ID        TextTwo,\r
-  IN OUT EFI_HII_UPDATE_DATA  *Data\r
-  )\r
-{\r
-  EFI_IFR_TEXT                Text;\r
-  UINT8                       *LocalBuffer;\r
-\r
-  ASSERT (Data != NULL && Data->Data != NULL);\r
-\r
-  if (Data->Offset + sizeof (EFI_IFR_TEXT) > Data->BufferSize) {\r
-    return EFI_BUFFER_TOO_SMALL;\r
-  }\r
-\r
-  Text.Header.OpCode    = EFI_IFR_TEXT_OP;\r
-  Text.Header.Length    = sizeof (EFI_IFR_TEXT);\r
-  Text.Header.Scope     = 0;\r
-  Text.Statement.Prompt = Prompt;\r
-  Text.Statement.Help   = Help;\r
-  Text.TextTwo          = TextTwo;\r
-\r
-  LocalBuffer = (UINT8 *) Data->Data + Data->Offset;\r
-  //\r
-  // CopyMem is used for EFI_IFR_TEXT to cover the unaligned address access.\r
-  //\r
-  CopyMem (LocalBuffer, &Text, sizeof (EFI_IFR_TEXT));\r
-  Data->Offset += sizeof (EFI_IFR_TEXT);\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Create EFI_IFR_REF_OP opcode.\r
-\r
-  If Data is NULL or Data->Data is NULL, then ASSERT.\r
-\r
-  @param  FormId                 Destination Form ID\r
-  @param  Prompt                 String ID for Prompt\r
-  @param  Help                   String ID for Help\r
-  @param  QuestionFlags          Flags in Question Header\r
-  @param  QuestionId             Question ID\r
-  @param  Data                   Destination for the created opcode binary\r
-\r
-  @retval EFI_SUCCESS            Opcode is created successfully.\r
-  @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
-  @retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CreateGotoOpCode (\r
-  IN     EFI_FORM_ID          FormId,\r
-  IN     EFI_STRING_ID        Prompt,\r
-  IN     EFI_STRING_ID        Help,\r
-  IN     UINT8                QuestionFlags,\r
-  IN     EFI_QUESTION_ID      QuestionId,\r
-  IN OUT EFI_HII_UPDATE_DATA  *Data\r
-  )\r
-{\r
-  EFI_IFR_REF                 Goto;\r
-  UINT8                       *LocalBuffer;\r
-\r
-  ASSERT (Data != NULL && Data->Data != NULL);\r
-\r
-  if (!IsValidQuestionFlags (QuestionFlags)) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  if (Data->Offset + sizeof (EFI_IFR_REF) > Data->BufferSize) {\r
-    return EFI_BUFFER_TOO_SMALL;\r
-  }\r
-\r
-  Goto.Header.OpCode          = EFI_IFR_REF_OP;\r
-  Goto.Header.Length          = sizeof (EFI_IFR_REF);\r
-  Goto.Header.Scope           = 0;\r
-  Goto.Question.Header.Prompt = Prompt;\r
-  Goto.Question.Header.Help   = Help;\r
-  Goto.Question.VarStoreId    = INVALID_VARSTORE_ID;\r
-  Goto.Question.QuestionId    = QuestionId;\r
-  Goto.Question.Flags         = QuestionFlags;\r
-  Goto.FormId                 = FormId;\r
-\r
-  LocalBuffer = (UINT8 *) Data->Data + Data->Offset;\r
-  //\r
-  // CopyMem is used for EFI_IFR_REF to cover the unaligned address access.\r
-  //\r
-  CopyMem (LocalBuffer, &Goto, sizeof (EFI_IFR_REF));\r
-  Data->Offset += sizeof (EFI_IFR_REF);\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Create EFI_IFR_ONE_OF_OPTION_OP opcode.\r
-\r
-  If Data is NULL or Data->Data is NULL, then ASSERT.\r
-\r
-  @param  OptionCount            The number of options.\r
-  @param  OptionsList            The list of Options.\r
-  @param  Type                   The data type.\r
-  @param  Data                   Destination for the created opcode binary\r
-\r
-  @retval EFI_SUCCESS            Opcode is created successfully.\r
-  @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
-  @retval EFI_INVALID_PARAMETER If OptionCount is not zero but OptionsList is NULL.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CreateOneOfOptionOpCode (\r
-  IN     UINTN                OptionCount,\r
-  IN     IFR_OPTION           *OptionsList,\r
-  IN     UINT8                Type,\r
-  IN OUT EFI_HII_UPDATE_DATA  *Data\r
-  )\r
-{\r
-  UINTN                       Index;\r
-  UINT8                       *LocalBuffer;\r
-  EFI_IFR_ONE_OF_OPTION       OneOfOption;\r
-\r
-  ASSERT (Data != NULL && Data->Data != NULL);\r
-\r
-  if ((OptionCount != 0) && (OptionsList == NULL)) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  if (Data->Offset + OptionCount * sizeof (EFI_IFR_ONE_OF_OPTION) > Data->BufferSize) {\r
-    return EFI_BUFFER_TOO_SMALL;\r
-  }\r
-\r
-  for (Index = 0; Index < OptionCount; Index++) {\r
-    OneOfOption.Header.OpCode = EFI_IFR_ONE_OF_OPTION_OP;\r
-    OneOfOption.Header.Length = sizeof (EFI_IFR_ONE_OF_OPTION);\r
-    OneOfOption.Header.Scope  = 0;\r
-\r
-    OneOfOption.Option        = OptionsList[Index].StringToken;\r
-    OneOfOption.Value         = OptionsList[Index].Value;\r
-    OneOfOption.Flags         = (UINT8) (OptionsList[Index].Flags & (EFI_IFR_OPTION_DEFAULT | EFI_IFR_OPTION_DEFAULT_MFG));\r
-    OneOfOption.Type          = Type;\r
-\r
-    LocalBuffer = (UINT8 *) Data->Data + Data->Offset;\r
-    //\r
-    // CopyMem is used for EFI_IFR_ONF_OF_OPTION to cover the unaligned address access.\r
-    //\r
-    CopyMem (LocalBuffer, &OneOfOption, sizeof (EFI_IFR_ONE_OF_OPTION));\r
-    Data->Offset += sizeof (EFI_IFR_ONE_OF_OPTION);\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Create EFI_IFR_ONE_OF_OP opcode.\r
-\r
-  If Data is NULL or Data->Data is NULL, then ASSERT.\r
-\r
-  @param  QuestionId             Question ID\r
-  @param  VarStoreId             Storage ID\r
-  @param  VarOffset              Offset in Storage\r
-  @param  Prompt                 String ID for Prompt\r
-  @param  Help                   String ID for Help\r
-  @param  QuestionFlags          Flags in Question Header\r
-  @param  OneOfFlags             Flags for oneof opcode\r
-  @param  OptionsList            List of options\r
-  @param  OptionCount            Number of options in option list\r
-  @param  Data                   Destination for the created opcode binary\r
-\r
-  @retval EFI_SUCCESS            Opcode is created successfully.\r
-  @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
-  @retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CreateOneOfOpCode (\r
-  IN     EFI_QUESTION_ID      QuestionId,\r
-  IN     EFI_VARSTORE_ID      VarStoreId,\r
-  IN     UINT16               VarOffset,\r
-  IN     EFI_STRING_ID        Prompt,\r
-  IN     EFI_STRING_ID        Help,\r
-  IN     UINT8                QuestionFlags,\r
-  IN     UINT8                OneOfFlags,\r
-  IN     IFR_OPTION           *OptionsList,\r
-  IN     UINTN                OptionCount,\r
-  IN OUT EFI_HII_UPDATE_DATA  *Data\r
-  )\r
-{\r
-  UINTN                       Length;\r
-  EFI_IFR_ONE_OF              OneOf;\r
-  UINT8                       *LocalBuffer;\r
-\r
-  ASSERT (Data != NULL && Data->Data != NULL);\r
-\r
-  if (!IsValidNumricFlags (OneOfFlags) ||\r
-      !IsValidQuestionFlags (QuestionFlags) ||\r
-      ((OptionCount != 0) && (OptionsList == NULL))) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  Length = sizeof (EFI_IFR_ONE_OF) + OptionCount * sizeof (EFI_IFR_ONE_OF_OPTION) + sizeof (EFI_IFR_END);\r
-  if (Data->Offset + Length > Data->BufferSize) {\r
-    return EFI_BUFFER_TOO_SMALL;\r
-  }\r
-\r
-  OneOf.Header.OpCode                   = EFI_IFR_ONE_OF_OP;\r
-  OneOf.Header.Length                   = sizeof (EFI_IFR_ONE_OF);\r
-  OneOf.Header.Scope                    = 1;\r
-  OneOf.Question.Header.Prompt          = Prompt;\r
-  OneOf.Question.Header.Help            = Help;\r
-  OneOf.Question.QuestionId             = QuestionId;\r
-  OneOf.Question.VarStoreId             = VarStoreId;\r
-  OneOf.Question.VarStoreInfo.VarOffset = VarOffset;\r
-  OneOf.Question.Flags                  = QuestionFlags;\r
-  OneOf.Flags                           = OneOfFlags;\r
-  ZeroMem ((VOID *) &OneOf.data, sizeof (MINMAXSTEP_DATA));\r
-\r
-  LocalBuffer = (UINT8 *) Data->Data + Data->Offset;\r
-  //\r
-  // CopyMem is used for EFI_IFR_ONF_OF to cover the unaligned address access.\r
-  //\r
-  CopyMem (LocalBuffer, &OneOf, sizeof (EFI_IFR_ONE_OF));\r
-  Data->Offset += sizeof (EFI_IFR_ONE_OF);\r
-\r
-  CreateOneOfOptionOpCode (OptionCount, OptionsList, (UINT8) (OneOfFlags & EFI_IFR_NUMERIC_SIZE), Data);\r
-\r
-  CreateEndOpCode (Data);\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Create EFI_IFR_ORDERED_LIST_OP opcode.\r
-\r
-  If Data is NULL or Data->Data is NULL, then ASSERT.\r
-\r
-  @param  QuestionId             Question ID\r
-  @param  VarStoreId             Storage ID\r
-  @param  VarOffset              Offset in Storage\r
-  @param  Prompt                 String ID for Prompt\r
-  @param  Help                   String ID for Help\r
-  @param  QuestionFlags          Flags in Question Header\r
-  @param  OrderedListFlags       Flags for ordered list opcode\r
-  @param  DataType               Type for option value\r
-  @param  MaxContainers          Maximum count for options in this ordered list\r
-  @param  OptionsList            List of options\r
-  @param  OptionCount            Number of options in option list\r
-  @param  Data                   Destination for the created opcode binary\r
-\r
-  @retval EFI_SUCCESS            Opcode is created successfully.\r
-  @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
-  @retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CreateOrderedListOpCode (\r
-  IN      EFI_QUESTION_ID     QuestionId,\r
-  IN      EFI_VARSTORE_ID     VarStoreId,\r
-  IN      UINT16              VarOffset,\r
-  IN      EFI_STRING_ID       Prompt,\r
-  IN      EFI_STRING_ID       Help,\r
-  IN      UINT8               QuestionFlags,\r
-  IN      UINT8               OrderedListFlags,\r
-  IN      UINT8               DataType,\r
-  IN      UINT8               MaxContainers,\r
-  IN      IFR_OPTION          *OptionsList,\r
-  IN     UINTN                OptionCount,\r
-  IN OUT EFI_HII_UPDATE_DATA  *Data\r
-  )\r
-{\r
-  UINTN                       Length;\r
-  EFI_IFR_ORDERED_LIST        OrderedList;\r
-  UINT8                       *LocalBuffer;\r
-\r
-  ASSERT (Data != NULL && Data->Data != NULL);\r
-\r
-  if (!IsValidQuestionFlags (QuestionFlags) ||\r
-      ((OptionCount != 0) && (OptionsList == NULL))) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  if ((OrderedListFlags != 0) &&\r
-      (OrderedListFlags != EFI_IFR_UNIQUE_SET) &&\r
-      (OrderedListFlags != EFI_IFR_NO_EMPTY_SET)) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  Length = sizeof (EFI_IFR_ORDERED_LIST) + OptionCount * sizeof (EFI_IFR_ONE_OF_OPTION) + sizeof (EFI_IFR_END);\r
-  if (Data->Offset + Length > Data->BufferSize) {\r
-    return EFI_BUFFER_TOO_SMALL;\r
-  }\r
-\r
-  OrderedList.Header.OpCode                   = EFI_IFR_ORDERED_LIST_OP;\r
-  OrderedList.Header.Length                   = sizeof (EFI_IFR_ORDERED_LIST);\r
-  OrderedList.Header.Scope                    = 1;\r
-  OrderedList.Question.Header.Prompt          = Prompt;\r
-  OrderedList.Question.Header.Help            = Help;\r
-  OrderedList.Question.QuestionId             = QuestionId;\r
-  OrderedList.Question.VarStoreId             = VarStoreId;\r
-  OrderedList.Question.VarStoreInfo.VarOffset = VarOffset;\r
-  OrderedList.Question.Flags                  = QuestionFlags;\r
-  OrderedList.MaxContainers                   = MaxContainers;\r
-  OrderedList.Flags                           = OrderedListFlags;\r
-\r
-  LocalBuffer = (UINT8 *) Data->Data + Data->Offset;\r
-  //\r
-  // CopyMem is used for EFI_IFR_ORDERED_LIST to cover the unaligned address access.\r
-  //\r
-  CopyMem (LocalBuffer, &OrderedList, sizeof (EFI_IFR_ORDERED_LIST));\r
-  Data->Offset += sizeof (EFI_IFR_ORDERED_LIST);\r
-\r
-  CreateOneOfOptionOpCode (OptionCount, OptionsList, DataType, Data);\r
-\r
-  CreateEndOpCode (Data);\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Create EFI_IFR_CHECKBOX_OP opcode.\r
-\r
-  If Data is NULL or Data->Data is NULL, then ASSERT.\r
-\r
-  @param  QuestionId             Question ID\r
-  @param  VarStoreId             Storage ID\r
-  @param  VarOffset              Offset in Storage\r
-  @param  Prompt                 String ID for Prompt\r
-  @param  Help                   String ID for Help\r
-  @param  QuestionFlags          Flags in Question Header\r
-  @param  CheckBoxFlags          Flags for checkbox opcode\r
-  @param  Data                   Destination for the created opcode binary\r
-\r
-  @retval EFI_SUCCESS            Opcode is created successfully.\r
-  @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
-  @retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CreateCheckBoxOpCode (\r
-  IN      EFI_QUESTION_ID     QuestionId,\r
-  IN      EFI_VARSTORE_ID     VarStoreId,\r
-  IN      UINT16              VarOffset,\r
-  IN      EFI_STRING_ID       Prompt,\r
-  IN      EFI_STRING_ID       Help,\r
-  IN      UINT8               QuestionFlags,\r
-  IN      UINT8               CheckBoxFlags,\r
-  IN OUT EFI_HII_UPDATE_DATA  *Data\r
-  )\r
-{\r
-  EFI_IFR_CHECKBOX            CheckBox;\r
-  UINT8                       *LocalBuffer;\r
-\r
-  ASSERT (Data != NULL && Data->Data != NULL);\r
-\r
-  if (!IsValidQuestionFlags (QuestionFlags) || !IsValidCheckboxFlags (CheckBoxFlags)) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  if (Data->Offset + sizeof (EFI_IFR_CHECKBOX) > Data->BufferSize) {\r
-    return EFI_BUFFER_TOO_SMALL;\r
-  }\r
-\r
-  CheckBox.Header.OpCode                   = EFI_IFR_CHECKBOX_OP;\r
-  CheckBox.Header.Length                   = sizeof (EFI_IFR_CHECKBOX);\r
-  CheckBox.Header.Scope                    = 0;\r
-  CheckBox.Question.QuestionId             = QuestionId;\r
-  CheckBox.Question.VarStoreId             = VarStoreId;\r
-  CheckBox.Question.VarStoreInfo.VarOffset = VarOffset;\r
-  CheckBox.Question.Header.Prompt          = Prompt;\r
-  CheckBox.Question.Header.Help            = Help;\r
-  CheckBox.Question.Flags                  = QuestionFlags;\r
-  CheckBox.Flags                           = CheckBoxFlags;\r
-\r
-  LocalBuffer = (UINT8 *) Data->Data + Data->Offset;\r
-  //\r
-  // CopyMem is used for EFI_IFR_CHECKBOX to cover the unaligned address access.\r
-  //\r
-  CopyMem (LocalBuffer, &CheckBox, sizeof (EFI_IFR_CHECKBOX));\r
-  Data->Offset += sizeof (EFI_IFR_CHECKBOX);\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Create EFI_IFR_NUMERIC_OP opcode.\r
-\r
-  If Data is NULL or Data->Data is NULL, then ASSERT.\r
-\r
-  @param  QuestionId             Question ID\r
-  @param  VarStoreId             Storage ID\r
-  @param  VarOffset              Offset in Storage\r
-  @param  Prompt                 String ID for Prompt\r
-  @param  Help                   String ID for Help\r
-  @param  QuestionFlags          Flags in Question Header\r
-  @param  NumericFlags           Flags for numeric opcode\r
-  @param  Minimum                Numeric minimum value\r
-  @param  Maximum                Numeric maximum value\r
-  @param  Step                   Numeric step for edit\r
-  @param  Default                Numeric default value\r
-  @param  Data                   Destination for the created opcode binary\r
-\r
-  @retval EFI_SUCCESS            Opcode is created successfully.\r
-  @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
-  @retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CreateNumericOpCode (\r
-  IN     EFI_QUESTION_ID     QuestionId,\r
-  IN     EFI_VARSTORE_ID     VarStoreId,\r
-  IN     UINT16              VarOffset,\r
-  IN     EFI_STRING_ID       Prompt,\r
-  IN     EFI_STRING_ID       Help,\r
-  IN     UINT8               QuestionFlags,\r
-  IN     UINT8               NumericFlags,\r
-  IN     UINT64              Minimum,\r
-  IN     UINT64              Maximum,\r
-  IN     UINT64              Step,\r
-  IN     UINT64              Default,\r
-  IN OUT EFI_HII_UPDATE_DATA *Data\r
-  )\r
-{\r
-  EFI_STATUS                  Status;\r
-  EFI_IFR_NUMERIC             Numeric;\r
-  MINMAXSTEP_DATA             MinMaxStep;\r
-  EFI_IFR_TYPE_VALUE          DefaultValue;\r
-  UINT8                       *LocalBuffer;\r
-\r
-  ASSERT (Data != NULL && Data->Data != NULL);\r
-\r
-  if (!IsValidQuestionFlags (QuestionFlags) || !IsValidNumricFlags (NumericFlags)) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  if (Data->Offset + sizeof (EFI_IFR_CHECKBOX) > Data->BufferSize) {\r
-    return EFI_BUFFER_TOO_SMALL;\r
-  }\r
-\r
-  Numeric.Header.OpCode                   = EFI_IFR_NUMERIC_OP;\r
-  Numeric.Header.Length                   = sizeof (EFI_IFR_NUMERIC);\r
-  Numeric.Header.Scope                    = 1;\r
-  Numeric.Question.QuestionId             = QuestionId;\r
-  Numeric.Question.VarStoreId             = VarStoreId;\r
-  Numeric.Question.VarStoreInfo.VarOffset = VarOffset;\r
-  Numeric.Question.Header.Prompt          = Prompt;\r
-  Numeric.Question.Header.Help            = Help;\r
-  Numeric.Question.Flags                  = QuestionFlags;\r
-  Numeric.Flags                           = NumericFlags;\r
-\r
-  switch (NumericFlags & EFI_IFR_NUMERIC_SIZE) {\r
-  case EFI_IFR_NUMERIC_SIZE_1:\r
-    MinMaxStep.u8.MinValue = (UINT8) Minimum;\r
-    MinMaxStep.u8.MaxValue = (UINT8) Maximum;\r
-    MinMaxStep.u8.Step     = (UINT8) Step;\r
-    break;\r
-\r
-  case EFI_IFR_NUMERIC_SIZE_2:\r
-    MinMaxStep.u16.MinValue = (UINT16) Minimum;\r
-    MinMaxStep.u16.MaxValue = (UINT16) Maximum;\r
-    MinMaxStep.u16.Step     = (UINT16) Step;\r
-    break;\r
-\r
-  case EFI_IFR_NUMERIC_SIZE_4:\r
-    MinMaxStep.u32.MinValue = (UINT32) Minimum;\r
-    MinMaxStep.u32.MaxValue = (UINT32) Maximum;\r
-    MinMaxStep.u32.Step     = (UINT32) Step;\r
-    break;\r
-\r
-  case EFI_IFR_NUMERIC_SIZE_8:\r
-    MinMaxStep.u64.MinValue = Minimum;\r
-    MinMaxStep.u64.MaxValue = Maximum;\r
-    MinMaxStep.u64.Step     = Step;\r
-    break;\r
-  }\r
-\r
-  CopyMem (&Numeric.data, &MinMaxStep, sizeof (MINMAXSTEP_DATA));\r
-\r
-  LocalBuffer = (UINT8 *) Data->Data + Data->Offset;\r
-  //\r
-  // CopyMem is used for EFI_IFR_NUMERIC to cover the unaligned address access.\r
-  //\r
-  CopyMem (LocalBuffer, &Numeric, sizeof (EFI_IFR_NUMERIC));\r
-  Data->Offset += sizeof (EFI_IFR_NUMERIC);\r
-\r
-  DefaultValue.u64 = Default;\r
-  Status = CreateDefaultOpCode (&DefaultValue, (UINT8) (NumericFlags & EFI_IFR_NUMERIC_SIZE), Data);\r
-  if (EFI_ERROR(Status)) {\r
-    return Status;\r
-  }\r
-\r
-  CreateEndOpCode (Data);\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Create EFI_IFR_STRING_OP opcode.\r
-\r
-  If Data is NULL or Data->Data is NULL, then ASSERT.\r
-\r
-  @param  QuestionId             Question ID\r
-  @param  VarStoreId             Storage ID\r
-  @param  VarOffset              Offset in Storage\r
-  @param  Prompt                 String ID for Prompt\r
-  @param  Help                   String ID for Help\r
-  @param  QuestionFlags          Flags in Question Header\r
-  @param  StringFlags            Flags for string opcode\r
-  @param  MinSize                String minimum length\r
-  @param  MaxSize                String maximum length\r
-  @param  Data                   Destination for the created opcode binary\r
-\r
-  @retval EFI_SUCCESS            Opcode is created successfully.\r
-  @retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.\r
-  @retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CreateStringOpCode (\r
-  IN      EFI_QUESTION_ID     QuestionId,\r
-  IN      EFI_VARSTORE_ID     VarStoreId,\r
-  IN      UINT16              VarOffset,\r
-  IN      EFI_STRING_ID       Prompt,\r
-  IN      EFI_STRING_ID       Help,\r
-  IN      UINT8               QuestionFlags,\r
-  IN      UINT8               StringFlags,\r
-  IN      UINT8               MinSize,\r
-  IN      UINT8               MaxSize,\r
-  IN OUT EFI_HII_UPDATE_DATA  *Data\r
-  )\r
-{\r
-  EFI_IFR_STRING              String;\r
-  UINT8                       *LocalBuffer;\r
-\r
-  ASSERT (Data != NULL && Data->Data != NULL);\r
-\r
-  if (!IsValidQuestionFlags (QuestionFlags) || (StringFlags & ~EFI_IFR_STRING_MULTI_LINE) != 0) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  if (Data->Offset + sizeof (EFI_IFR_STRING) > Data->BufferSize) {\r
-    return EFI_BUFFER_TOO_SMALL;\r
-  }\r
-\r
-  String.Header.OpCode                   = EFI_IFR_STRING_OP;\r
-  String.Header.Length                   = sizeof (EFI_IFR_STRING);\r
-  String.Header.Scope                    = 0;\r
-  String.Question.Header.Prompt          = Prompt;\r
-  String.Question.Header.Help            = Help;\r
-  String.Question.QuestionId             = QuestionId;\r
-  String.Question.VarStoreId             = VarStoreId;\r
-  String.Question.VarStoreInfo.VarOffset = VarOffset;\r
-  String.Question.Flags                  = QuestionFlags;\r
-  String.MinSize                         = MinSize;\r
-  String.MaxSize                         = MaxSize;\r
-  String.Flags                           = StringFlags;\r
-\r
-  LocalBuffer = (UINT8 *) Data->Data + Data->Offset;\r
-  //\r
-  // CopyMem is used for EFI_IFR_STRING to cover the unaligned address access.\r
-  //\r
-  CopyMem (LocalBuffer, &String, sizeof (EFI_IFR_STRING));\r
-  Data->Offset += sizeof (EFI_IFR_STRING);\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-\r
diff --git a/MdePkg/Library/UefiIfrSupportLib/UefiIfrSupportLib.inf b/MdePkg/Library/UefiIfrSupportLib/UefiIfrSupportLib.inf
deleted file mode 100644 (file)
index 0808821..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#/** @file\r
-# Instance of IFR Support Library.\r
-#\r
-# This library contains functions to do IFR opcode creation and utility\r
-# functions to help module to interact with a UEFI Form Browser.\r
-#\r
-# Copyright (c) 2007 - 2008, Intel Corporation. All rights reserved.\r
-#\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
-#\r
-#**/\r
-\r
-[Defines]\r
-  INF_VERSION                    = 0x00010005\r
-  BASE_NAME                      = UefiIfrSupportLib\r
-  FILE_GUID                      = bf38668e-e231-4baa-99e4-8c0e4c35dca6\r
-  MODULE_TYPE                    = UEFI_DRIVER\r
-  VERSION_STRING                 = 1.0\r
-  LIBRARY_CLASS                  = IfrSupportLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER\r
-  EDK_RELEASE_VERSION            = 0x00020000\r
-\r
-#\r
-# The following information is for reference only and not required by the build tools.\r
-#\r
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC\r
-#\r
-\r
-[Sources.common]\r
-  UefiIfrForm.c\r
-  UefiIfrLibraryInternal.h\r
-  UefiIfrOpCodeCreation.c\r
-\r
-\r
-[Packages]\r
-  MdePkg/MdePkg.dec\r
-\r
-\r
-[LibraryClasses]\r
-  MemoryAllocationLib\r
-  DevicePathLib\r
-  BaseLib\r
-  UefiBootServicesTableLib\r
-  BaseMemoryLib\r
-  DebugLib\r
-\r
-[Protocols]\r
-  gEfiDevicePathProtocolGuid                    # PROTOCOL ALWAYS_CONSUMED\r
-  gEfiHiiConfigRoutingProtocolGuid\r
-  gEfiFormBrowser2ProtocolGuid   \r