]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Application/UiApp/FrontPage.c
MdeModulePkg:Refine the UiApp
[mirror_edk2.git] / MdeModulePkg / Application / UiApp / FrontPage.c
index 4e80d7c6dac2025bf0c65fe7edbba2b0d706ee9a..5c67a3fa91ab7f89eb6edea8834e55e4a948a575 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   FrontPage routines to handle the callbacks and browser calls\r
 \r
-Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>\r
 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
@@ -16,12 +16,11 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include "Language.h"\r
 #define MAX_STRING_LEN        200\r
 \r
-EFI_GUID  mFrontPageGuid      = FRONT_PAGE_FORMSET_GUID;\r
+EFI_GUID   mFrontPageGuid      = FRONT_PAGE_FORMSET_GUID;\r
 \r
 BOOLEAN   gConnectAllHappened = FALSE;\r
 BOOLEAN   mFeaturerSwitch = TRUE;\r
 BOOLEAN   mResetRequired  = FALSE;\r
-BOOLEAN   mEnterBmm       = FALSE;\r
 \r
 EFI_FORM_BROWSER2_PROTOCOL      *gFormBrowser2;\r
 CHAR8     *mLanguageString;\r
@@ -153,14 +152,7 @@ FakeRouteConfig (
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
-  *Progress = Configuration;\r
-  if (!HiiIsConfigHdrMatch (Configuration, &mBootMaintGuid, mBootMaintStorageName)\r
-      && !HiiIsConfigHdrMatch (Configuration, &mFileExplorerGuid, mFileExplorerStorageName)) {\r
-    return EFI_NOT_FOUND;\r
-  }\r
-\r
-  *Progress = Configuration + StrLen (Configuration);\r
-  return EFI_SUCCESS;\r
+  return EFI_NOT_FOUND;\r
 }\r
 \r
 /**\r
@@ -219,13 +211,13 @@ InitializeLanguage (
   //\r
   HiiHandle = gFrontPagePrivate.HiiHandle;\r
 \r
-  CurrentLang = GetEfiGlobalVariable (L"PlatformLang");\r
+  GetEfiGlobalVariable2 (L"PlatformLang", (VOID**)&CurrentLang, NULL);\r
 \r
   if (mLanguageString == NULL) {\r
     //\r
     // Get Support language list from variable.\r
     //\r
-    mLanguageString = GetEfiGlobalVariable (L"PlatformLangCodes");\r
+    GetEfiGlobalVariable2 (L"PlatformLangCodes", (VOID**)&mLanguageString, NULL);\r
     if (mLanguageString == NULL) {\r
       mLanguageString = AllocateCopyPool (\r
                                  AsciiStrSize ((CHAR8 *) PcdGetPtr (PcdUefiVariableDefaultPlatformLangCodes)),\r
@@ -381,17 +373,7 @@ FrontPageCallback (
   UINTN                         Index;\r
   EFI_STATUS                    Status;\r
 \r
-  //\r
-  //Chech whether exit from BMM and reenter frontpage,if yes,reclaim string depositories\r
-  //\r
-  if (Action == EFI_BROWSER_ACTION_FORM_OPEN){\r
-    if (mEnterBmm){\r
-      ReclaimStringDepository();\r
-      mEnterBmm = FALSE;\r
-    }\r
-  }\r
-\r
-  if (Action != EFI_BROWSER_ACTION_CHANGING && Action != EFI_BROWSER_ACTION_CHANGED) {\r
+  if (Action != EFI_BROWSER_ACTION_CHANGED) {\r
     //\r
     // Do nothing for other UEFI Action. Only do call back when data is changed.\r
     //\r
@@ -449,56 +431,163 @@ FrontPageCallback (
       InitializeLanguage();\r
       break;\r
 \r
-\r
-    case FRONT_PAGE_KEY_RESET:\r
-      //\r
-      // Reset\r
-      //\r
-      gRT->ResetSystem (EfiResetCold, EFI_SUCCESS, 0, NULL);\r
-      return EFI_UNSUPPORTED;\r
-\r
     default:\r
       break;\r
     }\r
-  } else if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
-    if (Value == NULL) {\r
-      return EFI_INVALID_PARAMETER;\r
+  }\r
+\r
+  return EFI_SUCCESS;\r
+}\r
+\r
+/**\r
+Update front page form base on the ClassGuid in the formset in other modules.\r
+\r
+**/\r
+VOID\r
+UpdateFrontPageForm (\r
+  VOID\r
+  )\r
+{\r
+  EFI_STATUS                  Status;\r
+  EFI_HII_HANDLE              HiiHandle;\r
+  VOID                        *StartOpCodeHandle;\r
+  VOID                        *EndOpCodeHandle;\r
+  EFI_IFR_GUID_LABEL          *StartLabel;\r
+  EFI_IFR_GUID_LABEL          *EndLabel;\r
+  UINTN                       Index;\r
+  EFI_STRING                  String;\r
+  EFI_STRING_ID               Token;\r
+  EFI_STRING_ID               TokenHelp;\r
+  EFI_HII_HANDLE              *HiiHandles;\r
+  EFI_GUID                    FormSetGuid;\r
+  CHAR16                      *DevicePathStr;\r
+  EFI_STRING_ID               DevicePathId;\r
+  EFI_IFR_FORM_SET            *Buffer;\r
+  UINTN                       BufferSize;\r
+  UINT8                       ClassGuidNum;\r
+  EFI_GUID                    *ClassGuid;\r
+  UINTN                       TempSize;\r
+  UINT8                       *Ptr;\r
+\r
+  TempSize =0;\r
+  BufferSize = 0;\r
+  Buffer = NULL;\r
+\r
+  HiiHandle = gFrontPagePrivate.HiiHandle;\r
+\r
+  //\r
+  // Allocate space for creation of UpdateData Buffer\r
+  //\r
+  StartOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+  ASSERT (StartOpCodeHandle != NULL);\r
+\r
+  EndOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+  ASSERT (EndOpCodeHandle != NULL);\r
+  //\r
+  // Create Hii Extend Label OpCode as the start opcode\r
+  //\r
+  StartLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (StartOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));\r
+  StartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;\r
+  StartLabel->Number       = LABEL_PLATFORM_INFORMATION;\r
+  //\r
+  // Create Hii Extend Label OpCode as the end opcode\r
+  //\r
+  EndLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (EndOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));\r
+  EndLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;\r
+  EndLabel->Number       = LABEL_END;\r
+\r
+  //\r
+  // Get all the Hii handles\r
+  //\r
+  HiiHandles = HiiGetHiiHandles (NULL);\r
+  ASSERT (HiiHandles != NULL);\r
+  //\r
+  // Search for formset of each class type\r
+  //\r
+  for (Index = 0; HiiHandles[Index] != NULL; Index++) {\r
+    Status = HiiGetFormSetFromHiiHandle(HiiHandles[Index], &Buffer,&BufferSize);\r
+    if (EFI_ERROR (Status)) {\r
+      continue;\r
     }\r
 \r
-    //\r
-    // The first 4 entries in the Front Page are to be GUARANTEED to remain constant so IHV's can\r
-    // describe to their customers in documentation how to find their setup information (namely\r
-    // under the device manager and specific buckets)\r
-    //\r
-    switch (QuestionId) {\r
-    case FRONT_PAGE_KEY_BOOT_MANAGER:\r
-      //\r
-      // Boot Manager\r
-      //\r
-      EnumerateBootOptions ();\r
-      break;\r
+    Ptr = (UINT8 *)Buffer;\r
+    while(TempSize < BufferSize)  {\r
+      TempSize += ((EFI_IFR_OP_HEADER *) Ptr)->Length;\r
 \r
-    case FRONT_PAGE_KEY_DEVICE_MANAGER:\r
-      //\r
-      // Device Manager\r
-      //\r
-      CreateDeviceManagerForm(DEVICE_MANAGER_FORM_ID);\r
-      break;\r
+      if (((EFI_IFR_OP_HEADER *) Ptr)->Length <= OFFSET_OF (EFI_IFR_FORM_SET, Flags)){\r
+        Ptr += ((EFI_IFR_OP_HEADER *) Ptr)->Length;\r
+        continue;\r
+      }\r
 \r
-    case FRONT_PAGE_KEY_BOOT_MAINTAIN:\r
       //\r
-      // Boot Maintenance Manager\r
+      // Find Class Guid\r
       //\r
-      InitializeBM ();\r
-      mEnterBmm  = TRUE;\r
-      break;\r
+      ClassGuidNum = (UINT8) (((EFI_IFR_FORM_SET *)Ptr)->Flags & 0x3);\r
+      ClassGuid = (EFI_GUID *) (VOID *)(Ptr + sizeof (EFI_IFR_FORM_SET));\r
+      while (ClassGuidNum-- > 0) {\r
+        if (CompareGuid (&gEfiIfrFrontPageGuid, ClassGuid) == 0){\r
+          ClassGuid ++;\r
+          continue;\r
+        }\r
 \r
-    default:\r
-      break;\r
+        String = HiiGetString (HiiHandles[Index], ((EFI_IFR_FORM_SET *)Ptr)->FormSetTitle, NULL);\r
+        if (String == NULL) {\r
+          String = HiiGetString (HiiHandle, STRING_TOKEN (STR_MISSING_STRING), NULL);\r
+          ASSERT (String != NULL);\r
+        }\r
+        Token = HiiSetString (HiiHandle, 0, String, NULL);\r
+        FreePool (String);\r
+\r
+        String = HiiGetString (HiiHandles[Index], ((EFI_IFR_FORM_SET *)Ptr)->Help, NULL);\r
+\r
+        if (String == NULL) {\r
+          String = HiiGetString (HiiHandle, STRING_TOKEN (STR_MISSING_STRING), NULL);\r
+          ASSERT (String != NULL);\r
+        }\r
+        TokenHelp = HiiSetString (HiiHandle, 0, String, NULL);\r
+        FreePool (String);\r
+\r
+        FormSetGuid = ((EFI_IFR_FORM_SET *)Ptr)->Guid;\r
+\r
+        DevicePathStr = ExtractDevicePathFromHiiHandle(HiiHandles[Index]);\r
+        DevicePathId  = 0;\r
+        if (DevicePathStr != NULL){\r
+          DevicePathId = HiiSetString (HiiHandle, 0, DevicePathStr, NULL);\r
+          FreePool (DevicePathStr);\r
+        }\r
+        HiiCreateGotoExOpCode (\r
+          StartOpCodeHandle,\r
+          0,\r
+          Token,\r
+          TokenHelp,\r
+          0,\r
+          (EFI_QUESTION_ID) (Index + FRONT_PAGE_KEY_OFFSET),\r
+          0,\r
+          &FormSetGuid,\r
+          DevicePathId\r
+        );\r
+        break;\r
+      }\r
+      Ptr += ((EFI_IFR_OP_HEADER *) Ptr)->Length;\r
     }\r
+\r
+    FreePool(Buffer);\r
+    Buffer = NULL;\r
+    TempSize = 0;\r
+    BufferSize = 0;\r
   }\r
 \r
-  return EFI_SUCCESS;\r
+  HiiUpdateForm (\r
+    HiiHandle,\r
+    &mFrontPageGuid,\r
+    FRONT_PAGE_FORM_ID,\r
+    StartOpCodeHandle,\r
+    EndOpCodeHandle\r
+    );\r
+\r
+  HiiFreeOpCodeHandle (StartOpCodeHandle);\r
+  HiiFreeOpCodeHandle (EndOpCodeHandle);\r
+  FreePool (HiiHandles);\r
 }\r
 \r
 /**\r
@@ -515,7 +604,6 @@ InitializeFrontPage (
   )\r
 {\r
   EFI_STATUS                  Status;\r
-\r
   //\r
   // Locate Hii relative protocols\r
   //\r
@@ -560,6 +648,11 @@ InitializeFrontPage (
   //\r
   InitializeLanguage ();\r
 \r
+  //\r
+  //Updata Front Page form\r
+  //\r
+  UpdateFrontPageForm();\r
+\r
   return Status;\r
 }\r
 \r
@@ -606,6 +699,10 @@ CallFrontPage (
   return Status;\r
 }\r
 \r
+/**\r
+  Remove the installed packages from the HiiDatabase.\r
+\r
+**/\r
 VOID\r
 FreeFrontPage(\r
   VOID\r
@@ -649,6 +746,7 @@ ConvertProcessorToString (
 {\r
   CHAR16  *StringBuffer;\r
   UINTN   Index;\r
+  UINTN   DestMax;\r
   UINT32  FreqMhz;\r
 \r
   if (Base10Exponent >= 6) {\r
@@ -659,13 +757,13 @@ ConvertProcessorToString (
   } else {\r
     FreqMhz = 0;\r
   }\r
-\r
+  DestMax = 0x20 / sizeof (CHAR16);\r
   StringBuffer = AllocateZeroPool (0x20);\r
   ASSERT (StringBuffer != NULL);\r
   Index = UnicodeValueToString (StringBuffer, LEFT_JUSTIFY, FreqMhz / 1000, 3);\r
-  StrCat (StringBuffer, L".");\r
+  StrCatS (StringBuffer, DestMax, L".");\r
   UnicodeValueToString (StringBuffer + Index + 1, PREFIX_ZERO, (FreqMhz % 1000) / 10, 2);\r
-  StrCat (StringBuffer, L" GHz");\r
+  StrCatS (StringBuffer, DestMax, L" GHz");\r
   *String = (CHAR16 *) StringBuffer;\r
   return ;\r
 }\r
@@ -689,7 +787,7 @@ ConvertMemorySizeToString (
   StringBuffer = AllocateZeroPool (0x24);\r
   ASSERT (StringBuffer != NULL);\r
   UnicodeValueToString (StringBuffer, LEFT_JUSTIFY, MemorySize, 10);\r
-  StrCat (StringBuffer, L" MB RAM");\r
+  StrCatS (StringBuffer, 0x24 / sizeof (CHAR16), L" MB RAM");\r
 \r
   *String = (CHAR16 *) StringBuffer;\r
 \r
@@ -992,8 +1090,10 @@ BdsSetConsoleMode (
                   //\r
                   // Update text mode PCD.\r
                   //\r
-                  PcdSet32 (PcdConOutColumn, mSetupTextModeColumn);\r
-                  PcdSet32 (PcdConOutRow, mSetupTextModeRow);\r
+                  Status = PcdSet32S (PcdConOutColumn, mSetupTextModeColumn);\r
+                  ASSERT_EFI_ERROR (Status);\r
+                  Status = PcdSet32S (PcdConOutRow, mSetupTextModeRow);\r
+                  ASSERT_EFI_ERROR (Status);\r
                   FreePool (Info);\r
                   return EFI_SUCCESS;\r
                 }\r
@@ -1034,10 +1134,14 @@ BdsSetConsoleMode (
   // Set PCD to Inform GraphicsConsole to change video resolution.\r
   // Set PCD to Inform Consplitter to change text mode.\r
   //\r
-  PcdSet32 (PcdVideoHorizontalResolution, NewHorizontalResolution);\r
-  PcdSet32 (PcdVideoVerticalResolution, NewVerticalResolution);\r
-  PcdSet32 (PcdConOutColumn, NewColumns);\r
-  PcdSet32 (PcdConOutRow, NewRows);\r
+  Status = PcdSet32S (PcdVideoHorizontalResolution, NewHorizontalResolution);\r
+  ASSERT_EFI_ERROR (Status);\r
+  Status = PcdSet32S (PcdVideoVerticalResolution, NewVerticalResolution);\r
+  ASSERT_EFI_ERROR (Status);\r
+  Status = PcdSet32S (PcdConOutColumn, NewColumns);\r
+  ASSERT_EFI_ERROR (Status);\r
+  Status = PcdSet32S (PcdConOutRow, NewRows);\r
+  ASSERT_EFI_ERROR (Status);\r
   \r
   \r
   //\r
@@ -1205,15 +1309,9 @@ UiEntry (
   }\r
 \r
   InitializeFrontPage ();\r
-  InitializeDeviceManager ();\r
-  InitializeBootManager ();\r
-  InitBootMaintenance();\r
 \r
   CallFrontPage ();\r
 \r
-  FreeBMPackage ();\r
-  FreeBootManager ();\r
-  FreeDeviceManager ();\r
   FreeFrontPage ();\r
 \r
   if (mLanguageString != NULL) {\r
@@ -1243,10 +1341,7 @@ ExtractDevicePathFromHiiHandle (
 {\r
   EFI_STATUS                       Status;\r
   EFI_HANDLE                       DriverHandle;\r
-  EFI_DEVICE_PATH_PROTOCOL         *DevicePath;  \r
-  EFI_DEVICE_PATH_TO_TEXT_PROTOCOL *PathToText;\r
-  CHAR16                           *NewString;\r
-\r
+  \r
   ASSERT (Handle != NULL);\r
 \r
   if (Handle == NULL) {\r
@@ -1254,174 +1349,12 @@ ExtractDevicePathFromHiiHandle (
   }\r
 \r
   Status = gHiiDatabase->GetPackageListHandle (gHiiDatabase, Handle, &DriverHandle);\r
- if (EFI_ERROR (Status)) {\r
-    return NULL;\r
-  }\r
-\r
-  //\r
-  // Get the device path by the got Driver handle .\r
-  //\r
-  Status = gBS->HandleProtocol (DriverHandle, &gEfiDevicePathProtocolGuid, (VOID **) &DevicePath);\r
-  if (EFI_ERROR (Status)) {\r
-    return NULL;\r
- }\r
-\r
-  Status = gBS->LocateProtocol (\r
-                  &gEfiDevicePathToTextProtocolGuid,\r
-                  NULL,\r
-                  (VOID **) &PathToText\r
-                  );\r
   if (EFI_ERROR (Status)) {\r
     return NULL;\r
   }\r
 \r
-  //\r
-  // Get device path string.\r
-  //\r
-  NewString = PathToText->ConvertDevicePathToText(DevicePath, FALSE, FALSE);\r
+ return ConvertDevicePathToText(DevicePathFromHandle (DriverHandle), FALSE, FALSE);\r
 \r
-  return NewString;\r
-}\r
-\r
-/**\r
-  Extract the displayed formset for given HII handle and class guid.\r
-\r
-  @param Handle          The HII handle.\r
-  @param SetupClassGuid  The class guid specifies which form set will be displayed.\r
-  @param SkipCount       Skip some formsets which has processed before.\r
-  @param FormSetTitle    Formset title string.\r
-  @param FormSetHelp     Formset help string.\r
-  @param FormSetGuid     Formset Guid.\r
-\r
-  @retval  TRUE          The formset for given HII handle will be displayed.\r
-  @return  FALSE         The formset for given HII handle will not be displayed.\r
-\r
-**/\r
-BOOLEAN\r
-ExtractDisplayedHiiFormFromHiiHandle (\r
-  IN      EFI_HII_HANDLE      Handle,\r
-  IN      EFI_GUID            *SetupClassGuid,\r
-  IN      UINTN               SkipCount,\r
-  OUT     EFI_STRING_ID       *FormSetTitle,\r
-  OUT     EFI_STRING_ID       *FormSetHelp,\r
-  OUT     EFI_GUID            *FormSetGuid\r
-  )\r
-{\r
-  EFI_STATUS                   Status;\r
-  UINTN                        BufferSize;\r
-  EFI_HII_PACKAGE_LIST_HEADER  *HiiPackageList;\r
-  UINT8                        *Package;\r
-  UINT8                        *OpCodeData;\r
-  UINT32                       Offset;\r
-  UINT32                       Offset2;\r
-  UINT32                       PackageListLength;\r
-  EFI_HII_PACKAGE_HEADER       PackageHeader;\r
-  EFI_GUID                     *ClassGuid;\r
-  UINT8                        ClassGuidNum;\r
-  BOOLEAN                      FoundAndSkip;\r
-\r
-  ASSERT (Handle != NULL);\r
-  ASSERT (SetupClassGuid != NULL && FormSetTitle != NULL && FormSetHelp != NULL && FormSetGuid != NULL);\r
-\r
-  *FormSetTitle = 0;\r
-  *FormSetHelp  = 0;\r
-  ClassGuidNum  = 0;\r
-  ClassGuid     = NULL;\r
-  FoundAndSkip  = FALSE;\r
-\r
-  //\r
-  // Get HII PackageList\r
-  //\r
-  BufferSize = 0;\r
-  HiiPackageList = NULL;\r
-  Status = gHiiDatabase->ExportPackageLists (gHiiDatabase, Handle, &BufferSize, HiiPackageList);\r
-  //\r
-  // Handle is a invalid handle. Check if Handle is corrupted.\r
-  //\r
-  ASSERT (Status != EFI_NOT_FOUND);\r
-  //\r
-  // The return status should always be EFI_BUFFER_TOO_SMALL as input buffer's size is 0.\r
-  //\r
-  ASSERT (Status == EFI_BUFFER_TOO_SMALL);\r
-  \r
-  HiiPackageList = AllocatePool (BufferSize);\r
-  ASSERT (HiiPackageList != NULL);\r
-\r
-  Status = gHiiDatabase->ExportPackageLists (gHiiDatabase, Handle, &BufferSize, HiiPackageList);\r
-  if (EFI_ERROR (Status)) {\r
-    return FALSE;\r
-  }\r
-\r
-  //\r
-  // Get Form package from this HII package List\r
-  //\r
-  Offset = sizeof (EFI_HII_PACKAGE_LIST_HEADER);\r
-  PackageListLength = ReadUnaligned32 (&HiiPackageList->PackageLength);\r
-\r
-  while (Offset < PackageListLength) {\r
-    Package = ((UINT8 *) HiiPackageList) + Offset;\r
-    CopyMem (&PackageHeader, Package, sizeof (EFI_HII_PACKAGE_HEADER));\r
-    Offset += PackageHeader.Length;\r
-\r
-    if (PackageHeader.Type == EFI_HII_PACKAGE_FORMS) {\r
-      //\r
-      // Search FormSet Opcode in this Form Package\r
-      //\r
-      Offset2 = sizeof (EFI_HII_PACKAGE_HEADER);\r
-      while (Offset2 < PackageHeader.Length) {\r
-        OpCodeData = Package + Offset2;\r
-        Offset2 += ((EFI_IFR_OP_HEADER *) OpCodeData)->Length;\r
-\r
-        if (((EFI_IFR_OP_HEADER *) OpCodeData)->OpCode == EFI_IFR_FORM_SET_OP) {\r
-          if (((EFI_IFR_OP_HEADER *) OpCodeData)->Length > OFFSET_OF (EFI_IFR_FORM_SET, Flags)) {\r
-            //\r
-            // Find FormSet OpCode\r
-            //\r
-            ClassGuidNum = (UINT8) (((EFI_IFR_FORM_SET *) OpCodeData)->Flags & 0x3);\r
-            ClassGuid = (EFI_GUID *) (VOID *)(OpCodeData + sizeof (EFI_IFR_FORM_SET));\r
-            while (ClassGuidNum-- > 0) {\r
-              if (CompareGuid (SetupClassGuid, ClassGuid)) {\r
-                //\r
-                // Check whether need to skip the formset.\r
-                //\r
-                if (SkipCount != 0) {\r
-                  SkipCount--;\r
-                  FoundAndSkip = TRUE;\r
-                  break;\r
-                }\r
-                CopyMem (FormSetTitle, &((EFI_IFR_FORM_SET *) OpCodeData)->FormSetTitle, sizeof (EFI_STRING_ID));\r
-                CopyMem (FormSetHelp, &((EFI_IFR_FORM_SET *) OpCodeData)->Help, sizeof (EFI_STRING_ID));\r
-                CopyGuid (FormSetGuid, (CONST EFI_GUID *)(&((EFI_IFR_FORM_SET *) OpCodeData)->Guid));\r
-                FreePool (HiiPackageList);\r
-                return TRUE;\r
-              }\r
-              ClassGuid ++;\r
-            }\r
-            if (FoundAndSkip) {\r
-              break;\r
-            }\r
-           } else if (CompareGuid (SetupClassGuid, &gEfiHiiPlatformSetupFormsetGuid)) {\r
-             //\r
-             //  Check whether need to skip the formset.\r
-             //\r
-             if (SkipCount != 0) {\r
-               SkipCount--;\r
-               break;\r
-             }\r
-             CopyMem (FormSetTitle, &((EFI_IFR_FORM_SET *) OpCodeData)->FormSetTitle, sizeof (EFI_STRING_ID));\r
-             CopyMem (FormSetHelp, &((EFI_IFR_FORM_SET *) OpCodeData)->Help, sizeof (EFI_STRING_ID));\r
-             CopyGuid (FormSetGuid, (CONST EFI_GUID *)(&((EFI_IFR_FORM_SET *) OpCodeData)->Guid));\r
-             FreePool (HiiPackageList);\r
-             return TRUE;\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
-\r
-  FreePool (HiiPackageList);\r
-\r
-  return FALSE;\r
 }\r
 \r
 //\r
@@ -1546,8 +1479,8 @@ SetupResetReminder (
       ASSERT (StringBuffer1 != NULL);\r
       StringBuffer2 = AllocateZeroPool (MAX_STRING_LEN * sizeof (CHAR16));\r
       ASSERT (StringBuffer2 != NULL);\r
-      StrCpy (StringBuffer1, L"Configuration changed. Reset to apply it Now.");\r
-      StrCpy (StringBuffer2, L"Press ENTER to reset");\r
+      StrCpyS (StringBuffer1, MAX_STRING_LEN, L"Configuration changed. Reset to apply it Now.");\r
+      StrCpyS (StringBuffer2, MAX_STRING_LEN, L"Press ENTER to reset");\r
       //\r
       // Popup a menu to notice user\r
       //\r
@@ -1563,39 +1496,3 @@ SetupResetReminder (
   }\r
 }\r
 \r
-\r
-/**\r
-  This function converts an input device structure to a Unicode string.\r
-\r
-  @param DevPath                  A pointer to the device path structure.\r
-\r
-  @return A new allocated Unicode string that represents the device path.\r
-\r
-**/\r
-CHAR16 *\r
-UiDevicePathToStr (\r
-  IN EFI_DEVICE_PATH_PROTOCOL     *DevPath\r
-  )\r
-{\r
-  EFI_STATUS                       Status;\r
-  CHAR16                           *ToText;\r
-  EFI_DEVICE_PATH_TO_TEXT_PROTOCOL *DevPathToText;\r
-\r
-  if (DevPath == NULL) {\r
-    return NULL;\r
-  }\r
-\r
-  Status = gBS->LocateProtocol (\r
-                  &gEfiDevicePathToTextProtocolGuid,\r
-                  NULL,\r
-                  (VOID **) &DevPathToText\r
-                  );\r
-  ASSERT_EFI_ERROR (Status);\r
-  ToText = DevPathToText->ConvertDevicePathToText (\r
-                            DevPath,\r
-                            FALSE,\r
-                            TRUE\r
-                            );\r
-  ASSERT (ToText != NULL);\r
-  return ToText;\r
-}\r