]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellBcfgCommandLib/UefiShellBcfgCommandLib.c
ShellPkg: Standardized HP Copyright Message String
[mirror_edk2.git] / ShellPkg / Library / UefiShellBcfgCommandLib / UefiShellBcfgCommandLib.c
index d62b569ab316c6a8be088f21ab921fb587f22c28..6a741f8bcb702af94a2b86411acc116840765937 100644 (file)
@@ -1,6 +1,7 @@
 /** @file\r
   Main file for BCFG command.\r
 \r
+  (C) Copyright 2014-2015 Hewlett-Packard Development Company, L.P.<BR>\r
   Copyright (c) 2010 - 2014, 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
@@ -384,7 +385,7 @@ BcfgAdd(
                      (VOID**)&FilePath);\r
         }\r
         if (EFI_ERROR (Status)) {\r
-          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_HANDLE), gShellBcfgHiiHandle, HandleNumber);\r
+          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_HANDLE), gShellBcfgHiiHandle, L"bcfg", HandleNumber);  \r
           ShellStatus = SHELL_INVALID_PARAMETER;\r
         }\r
       } else {\r
@@ -415,7 +416,7 @@ BcfgAdd(
               || ParentControllerHandleCount > 0\r
               || ChildControllerHandleCount > 0\r
               || !EFI_ERROR(Status) ) {\r
-          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellBcfgHiiHandle, L"Handle Number");\r
+          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", L"Handle Number");  \r
           ShellStatus = SHELL_INVALID_PARAMETER;\r
         } else {\r
           //\r
@@ -435,18 +436,18 @@ BcfgAdd(
       //\r
       // If filename matched nothing fail\r
       //\r
-      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellBcfgHiiHandle, File);\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellBcfgHiiHandle, L"bcfg", File);  \r
       ShellStatus = SHELL_INVALID_PARAMETER;\r
     } else if (FileList->Link.ForwardLink != FileList->Link.BackLink) {\r
       //\r
       // If filename expanded to multiple names, fail\r
       //\r
-      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_FILE), gShellBcfgHiiHandle, File);\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_FILE), gShellBcfgHiiHandle, L"bcfg", File);  \r
       ShellStatus = SHELL_INVALID_PARAMETER;\r
     } else {\r
       Arg = (EFI_SHELL_FILE_INFO*)GetFirstNode(&FileList->Link);\r
       if (EFI_ERROR(Arg->Status)) {\r
-        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_FILE_OPEN), gShellBcfgHiiHandle, File, Arg->Status);\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_FILE_OPEN), gShellBcfgHiiHandle, L"bcfg", File);  \r
         ShellStatus = SHELL_INVALID_PARAMETER;\r
       } else {\r
         //\r
@@ -458,7 +459,7 @@ BcfgAdd(
         //\r
         DevicePath = gEfiShellProtocol->GetDevicePathFromFilePath(Arg->FullName);\r
         if (DevicePath == NULL) {\r
-          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_FILE_DP), gShellBcfgHiiHandle, Arg->FullName);\r
+          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_FILE_DP), gShellBcfgHiiHandle, L"bcfg", Arg->FullName);  \r
           ShellStatus = SHELL_UNSUPPORTED;\r
         } else {\r
 /*\r
@@ -516,7 +517,7 @@ BcfgAdd(
     }\r
 \r
     if (TargetLocation == 0xFFFF) {\r
-      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_TARGET_NF), gShellBcfgHiiHandle);\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_TARGET_NF), gShellBcfgHiiHandle, L"bcfg");  \r
     } else {\r
       ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_TARGET), gShellBcfgHiiHandle, TargetLocation);\r
     }\r
@@ -558,7 +559,7 @@ BcfgAdd(
     }\r
 \r
     if (EFI_ERROR(Status)) {\r
-      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellBcfgHiiHandle, OptionStr, Status);\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellBcfgHiiHandle, L"bcfg", OptionStr);  \r
     } else {\r
       NewOrder = AllocateZeroPool((OrderCount+1)*sizeof(NewOrder[0]));\r
       ASSERT(NewOrder != NULL);\r
@@ -583,7 +584,7 @@ BcfgAdd(
       FreePool(NewOrder);\r
 \r
       if (EFI_ERROR(Status)) {\r
-        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_WRITE_FAIL), gShellBcfgHiiHandle, Target == BcfgTargetBootOrder?L"BootOrder":L"DriverOrder", Status);\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_WRITE_FAIL), gShellBcfgHiiHandle, L"bcfg", Target == BcfgTargetBootOrder?L"BootOrder":L"DriverOrder");  \r
         ShellStatus = SHELL_INVALID_PARAMETER;\r
       } else {\r
         Print (L"bcfg: Add %s as %x\n", OptionStr, Position);\r
@@ -646,7 +647,7 @@ BcfgRemove(
     0,\r
     NULL);\r
   if (EFI_ERROR(Status)) {\r
-    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_WRITE_FAIL), gShellBcfgHiiHandle, VariableName, Status);\r
+    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_WRITE_FAIL), gShellBcfgHiiHandle, L"bcfg", VariableName);  \r
     return (SHELL_INVALID_PARAMETER);\r
   }\r
   NewOrder = AllocateZeroPool(OrderCount*sizeof(CurrentOrder[0]));\r
@@ -667,7 +668,7 @@ BcfgRemove(
     Status = EFI_OUT_OF_RESOURCES;\r
   }\r
   if (EFI_ERROR(Status)) {\r
-    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_WRITE_FAIL), gShellBcfgHiiHandle, Target == BcfgTargetBootOrder?(CHAR16*)L"BootOrder":(CHAR16*)L"DriverOrder", Status);\r
+    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_WRITE_FAIL), gShellBcfgHiiHandle, L"bcfg", Target == BcfgTargetBootOrder?(CHAR16*)L"BootOrder":(CHAR16*)L"DriverOrder");  \r
     return (SHELL_INVALID_PARAMETER);\r
   }\r
   return (SHELL_SUCCESS);\r
@@ -730,7 +731,7 @@ BcfgMove(
   FreePool(NewOrder);\r
 \r
   if (EFI_ERROR(Status)) {\r
-    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_WRITE_FAIL), gShellBcfgHiiHandle, Target == BcfgTargetBootOrder?(CHAR16*)L"BootOrder":(CHAR16*)L"DriverOrder", Status);\r
+    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_WRITE_FAIL), gShellBcfgHiiHandle, L"bcfg", Target == BcfgTargetBootOrder?(CHAR16*)L"BootOrder":(CHAR16*)L"DriverOrder");  \r
     return (SHELL_INVALID_PARAMETER);\r
   }\r
   return (SHELL_SUCCESS);\r
@@ -767,8 +768,9 @@ BcfgAddOpt(
   CHAR16          *FileName;\r
   CHAR16          *Temp2;\r
   CHAR16          *Data;\r
-  UINT16          KeyIndex;\r
+  UINT32          KeyIndex;\r
   CHAR16          VariableName[12];\r
+  VOID            *VariableData;\r
 \r
   SHELL_FILE_HANDLE FileHandle;\r
 \r
@@ -778,8 +780,10 @@ BcfgAddOpt(
   FileName        = NULL;\r
   Data            = NULL;\r
   KeyOptionBuffer = NULL;\r
+  VariableData    = NULL;\r
 \r
   ZeroMem(&NewKeyOption, sizeof(EFI_KEY_OPTION));\r
+  ZeroMem(VariableName, sizeof(VariableName));\r
 \r
   while(Walker[0] == L' ') {\r
     Walker++;\r
@@ -790,7 +794,7 @@ BcfgAddOpt(
   //\r
   Status = ShellConvertStringToUint64(Walker, &Intermediate, FALSE, TRUE);\r
   if (EFI_ERROR(Status) || (((UINT16)Intermediate) != Intermediate) || StrStr(Walker, L" ") == NULL || ((UINT16)Intermediate) > ((UINT16)OrderCount)) {\r
-    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellBcfgHiiHandle, L"Option Index");\r
+    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", L"Option Index");  \r
     ShellStatus = SHELL_INVALID_PARAMETER;\r
     return (ShellStatus);\r
   }\r
@@ -813,12 +817,12 @@ BcfgAddOpt(
     //\r
     Temp = StrStr(Walker+1, L"\"");\r
     if (Temp == NULL || StrLen(Temp) != 1) {\r
-      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellBcfgHiiHandle, Walker);\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", Walker);  \r
       ShellStatus = SHELL_INVALID_PARAMETER;\r
     } else {\r
       FileName = StrnCatGrow(&FileName, NULL, Walker+1, 0);\r
       if (FileName == NULL) {\r
-        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellBcfgHiiHandle);\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellBcfgHiiHandle, L"bcfg");  \r
         ShellStatus = SHELL_OUT_OF_RESOURCES;\r
         return (ShellStatus);\r
       }\r
@@ -827,7 +831,7 @@ BcfgAddOpt(
       Temp2[0] = CHAR_NULL;\r
       Temp2++;\r
       if (StrLen(Temp2)>0) {\r
-        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellBcfgHiiHandle, Walker);\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", Walker);  \r
         ShellStatus = SHELL_INVALID_PARAMETER;\r
       }\r
       if (EFI_ERROR(ShellFileExists(Walker))) {\r
@@ -849,14 +853,14 @@ BcfgAddOpt(
       // filename\r
       //\r
       if (EFI_ERROR(ShellFileExists(Walker))) {\r
-        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FIND_FAIL), gShellBcfgHiiHandle, Walker);\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FIND_FAIL), gShellBcfgHiiHandle, L"bcfg", Walker);  \r
         ShellStatus = SHELL_INVALID_PARAMETER;\r
       } else {\r
         FileName = StrnCatGrow(&FileName, NULL, Walker, 0);\r
       }\r
     } else {\r
       if (Target != BcfgTargetBootOrder) {\r
-        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_BOOT_ONLY), gShellBcfgHiiHandle);\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_BOOT_ONLY), gShellBcfgHiiHandle, L"bcfg");  \r
         ShellStatus = SHELL_INVALID_PARAMETER;\r
       }\r
 \r
@@ -866,7 +870,7 @@ BcfgAddOpt(
         //\r
         Status = ShellConvertStringToUint64(Walker, &Intermediate, FALSE, TRUE);\r
         if (EFI_ERROR(Status) || (((UINT32)Intermediate) != Intermediate) || StrStr(Walker, L" ") == NULL) {\r
-          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellBcfgHiiHandle, Walker);\r
+          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", Walker);  \r
           ShellStatus = SHELL_INVALID_PARAMETER;\r
         }\r
         NewKeyOption.KeyData.PackedValue = (UINT32)Intermediate;\r
@@ -886,7 +890,7 @@ BcfgAddOpt(
         //\r
         KeyOptionBuffer = AllocateCopyPool(sizeof(EFI_KEY_OPTION) + (sizeof(EFI_INPUT_KEY) * NewKeyOption.KeyData.Options.InputKeyCount), &NewKeyOption);\r
         if (KeyOptionBuffer == NULL) {\r
-          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_MEM), gShellBcfgHiiHandle);\r
+          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_MEM), gShellBcfgHiiHandle, L"bcfg");  \r
           ShellStatus = SHELL_OUT_OF_RESOURCES;\r
         }\r
       }\r
@@ -896,7 +900,7 @@ BcfgAddOpt(
         //\r
         Status = ShellConvertStringToUint64(Walker, &Intermediate, FALSE, TRUE);\r
         if (EFI_ERROR(Status) || (((UINT16)Intermediate) != Intermediate) || StrStr(Walker, L" ") == NULL) {\r
-          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellBcfgHiiHandle, Walker);\r
+          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", Walker);  \r
           ShellStatus = SHELL_INVALID_PARAMETER;\r
         }\r
         ((EFI_INPUT_KEY*)(((UINT8*)KeyOptionBuffer) + sizeof(EFI_KEY_OPTION)))[LoopCounter].ScanCode = (UINT16)Intermediate;\r
@@ -913,7 +917,7 @@ BcfgAddOpt(
         //\r
         Status = ShellConvertStringToUint64(Walker, &Intermediate, FALSE, TRUE);\r
         if (EFI_ERROR(Status) || (((UINT16)Intermediate) != Intermediate)) {\r
-          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellBcfgHiiHandle, Walker);\r
+          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", Walker);  \r
           ShellStatus = SHELL_INVALID_PARAMETER;\r
         }\r
         ((EFI_INPUT_KEY*)(((UINT8*)KeyOptionBuffer) + sizeof(EFI_KEY_OPTION)))[LoopCounter].UnicodeChar = (UINT16)Intermediate;\r
@@ -934,34 +938,37 @@ BcfgAddOpt(
         KeyOptionBuffer->BootOption    = CurrentOrder[OptionIndex];\r
         Status = GetBootOptionCrc(&(KeyOptionBuffer->BootOptionCrc), KeyOptionBuffer->BootOption);\r
         if (EFI_ERROR(Status)) {\r
-          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellBcfgHiiHandle, L"Option Index");\r
+          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", L"Option Index");  \r
           ShellStatus = SHELL_INVALID_PARAMETER;\r
         }        \r
       }\r
 \r
       if (ShellStatus == SHELL_SUCCESS) {\r
-        for (Temp2 = NULL, KeyIndex = 0 ; KeyIndex < 0xFFFF ; KeyIndex++) {\r
+        for (Temp2 = NULL, KeyIndex = 0 ; KeyIndex <= 0xFFFF ; KeyIndex++) {\r
           UnicodeSPrint(VariableName, sizeof(VariableName), L"Key%04x", KeyIndex);\r
-          Status = gRT->GetVariable(\r
-              VariableName,\r
-              (EFI_GUID*)&gEfiGlobalVariableGuid,\r
-              NULL,\r
-              (UINTN*)&Intermediate,\r
-              NULL);\r
+          Status = GetEfiGlobalVariable2 (VariableName, &VariableData, NULL);\r
           if (Status == EFI_NOT_FOUND) {\r
             break;\r
           }\r
+          if (!EFI_ERROR(Status)) {\r
+            SHELL_FREE_NON_NULL(VariableData);\r
+          }\r
         }\r
-        Status = gRT->SetVariable(\r
-          VariableName,\r
-          (EFI_GUID*)&gEfiGlobalVariableGuid,\r
-          EFI_VARIABLE_NON_VOLATILE|EFI_VARIABLE_BOOTSERVICE_ACCESS|EFI_VARIABLE_RUNTIME_ACCESS,\r
-          sizeof(EFI_KEY_OPTION) + (sizeof(EFI_INPUT_KEY) * NewKeyOption.KeyData.Options.InputKeyCount),\r
-          KeyOptionBuffer);\r
-        if (EFI_ERROR(Status)) {\r
-          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellBcfgHiiHandle, VariableName, Status);\r
+        if (KeyIndex <= 0xFFFF) {\r
+          Status = gRT->SetVariable(\r
+            VariableName,\r
+            (EFI_GUID*)&gEfiGlobalVariableGuid,\r
+            EFI_VARIABLE_NON_VOLATILE|EFI_VARIABLE_BOOTSERVICE_ACCESS|EFI_VARIABLE_RUNTIME_ACCESS,\r
+            sizeof(EFI_KEY_OPTION) + (sizeof(EFI_INPUT_KEY) * NewKeyOption.KeyData.Options.InputKeyCount),\r
+            KeyOptionBuffer);\r
+          if (EFI_ERROR(Status)) {\r
+            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellBcfgHiiHandle, L"bcfg", VariableName);  \r
+            ShellStatus = SHELL_INVALID_PARAMETER;\r
+          }   \r
+        } else {\r
+          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_VAR_NO_NUM), gShellBcfgHiiHandle, L"bcfg");  \r
           ShellStatus = SHELL_INVALID_PARAMETER;\r
-        }   \r
+        }\r
         ASSERT(FileName == NULL && Data == NULL);\r
       }\r
     }\r
@@ -987,7 +994,7 @@ BcfgAddOpt(
       }\r
       Data = AllocateZeroPool((UINTN)Intermediate);\r
       if (Data == NULL) {\r
-        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_MEM), gShellBcfgHiiHandle);\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_MEM), gShellBcfgHiiHandle, L"bcfg");  \r
         ShellStatus = SHELL_OUT_OF_RESOURCES;\r
       }\r
       if (!EFI_ERROR(Status)) {\r
@@ -1000,12 +1007,12 @@ BcfgAddOpt(
     if (!EFI_ERROR(Status) && ShellStatus == SHELL_SUCCESS && Data != NULL) {\r
       Status = UpdateOptionalData(CurrentOrder[OptionIndex], (UINTN)Intermediate, (UINT8*)Data, Target);\r
       if (EFI_ERROR(Status)) {\r
-        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellBcfgHiiHandle, VariableName, Status);\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellBcfgHiiHandle, L"bcfg", VariableName);  \r
         ShellStatus = SHELL_INVALID_PARAMETER;\r
       }   \r
     }\r
     if (EFI_ERROR(Status) && ShellStatus == SHELL_SUCCESS) {\r
-      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellBcfgHiiHandle, VariableName, Status);\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellBcfgHiiHandle, L"bcfg", VariableName);  \r
       ShellStatus = SHELL_INVALID_PARAMETER;\r
     }   \r
   }\r
@@ -1046,7 +1053,7 @@ BcfgDisplayDump(
   VOID        *DevPath;\r
 \r
   if (OrderCount == 0) {\r
-    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN(STR_BCFG_NONE), gShellBcfgHiiHandle);\r
+    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN(STR_BCFG_NONE), gShellBcfgHiiHandle, L"bcfg");  \r
     return (SHELL_SUCCESS);\r
   }\r
 \r
@@ -1072,7 +1079,7 @@ BcfgDisplayDump(
     }\r
 \r
     if (EFI_ERROR(Status) || Buffer == NULL) {\r
-      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_READ_FAIL), gShellBcfgHiiHandle, VariableName, Status);\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_READ_FAIL), gShellBcfgHiiHandle, L"bcfg", VariableName);  \r
       return (SHELL_INVALID_PARAMETER);\r
     }\r
 \r
@@ -1204,7 +1211,7 @@ ShellCommandRunBcfg (
   Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);\r
   if (EFI_ERROR(Status)) {\r
     if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {\r
-      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellBcfgHiiHandle, ProblemParam);\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellBcfgHiiHandle, L"bcfg", ProblemParam);  \r
       FreePool(ProblemParam);\r
       ShellStatus = SHELL_INVALID_PARAMETER;\r
     } else {\r
@@ -1217,7 +1224,7 @@ ShellCommandRunBcfg (
     if (ShellCommandLineGetFlag(Package, L"-opt")) {\r
       CurrentOperation.OptData = ShellCommandLineGetValue(Package, L"-opt");\r
       if (CurrentOperation.OptData == NULL) {\r
-        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_VAL), gShellBcfgHiiHandle, L"-opt");\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellBcfgHiiHandle, L"bcfg", L"-opt");  \r
         ShellStatus = SHELL_INVALID_PARAMETER;\r
       }\r
       CurrentOperation.Type = BcfgTypeOpt;\r
@@ -1229,14 +1236,14 @@ ShellCommandRunBcfg (
     if ((ShellCommandLineGetCount(Package) < 3 && CurrentOperation.Type != BcfgTypeOpt) ||\r
         (ShellCommandLineGetCount(Package) < 2 && CurrentOperation.Type == BcfgTypeOpt)\r
        ){\r
-      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle);\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg");  \r
       ShellStatus = SHELL_INVALID_PARAMETER;\r
     } else if (gUnicodeCollation->StriColl(gUnicodeCollation, (CHAR16*)ShellCommandLineGetRawValue(Package, 1), L"driver") == 0) {\r
       CurrentOperation.Target = BcfgTargetDriverOrder;\r
     } else if (gUnicodeCollation->StriColl(gUnicodeCollation, (CHAR16*)ShellCommandLineGetRawValue(Package, 1), L"boot") == 0) {\r
       CurrentOperation.Target = BcfgTargetBootOrder;\r
     } else {\r
-      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_DRIVER_BOOT), gShellBcfgHiiHandle);\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_DRIVER_BOOT), gShellBcfgHiiHandle, L"bcfg");  \r
       ShellStatus = SHELL_INVALID_PARAMETER;\r
     }\r
 \r
@@ -1278,17 +1285,17 @@ ShellCommandRunBcfg (
         if        (gUnicodeCollation->StriColl(gUnicodeCollation, (CHAR16*)CurrentParam, L"dump") == 0)    {\r
           CurrentOperation.Type = BcfgTypeDump;\r
         } else if (ShellCommandLineGetFlag(Package, L"-v")) {\r
-          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellBcfgHiiHandle, L"-v (without dump)");\r
+          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", L"-v (without dump)");  \r
           ShellStatus = SHELL_INVALID_PARAMETER;\r
         } else if (gUnicodeCollation->StriColl(gUnicodeCollation, (CHAR16*)CurrentParam, L"add") == 0)     {\r
           if ((ParamNumber + 3) >= ShellCommandLineGetCount(Package)) {\r
-            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle);\r
+            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg");  \r
             ShellStatus = SHELL_INVALID_PARAMETER;\r
           }\r
           CurrentOperation.Type = BcfgTypeAdd;\r
           CurrentParam = ShellCommandLineGetRawValue(Package, ++ParamNumber);\r
           if (CurrentParam == NULL || !ShellIsHexOrDecimalNumber(CurrentParam, TRUE, FALSE)) {\r
-            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellBcfgHiiHandle, CurrentParam);\r
+            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam);  \r
             ShellStatus = SHELL_INVALID_PARAMETER;\r
           } else {\r
             Status = ShellConvertStringToUint64(CurrentParam, &Intermediate, TRUE, FALSE);\r
@@ -1300,13 +1307,13 @@ ShellCommandRunBcfg (
           }\r
         } else if (gUnicodeCollation->StriColl(gUnicodeCollation, (CHAR16*)CurrentParam, L"addp") == 0)    {\r
           if ((ParamNumber + 3) >= ShellCommandLineGetCount(Package)) {\r
-            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle);\r
+            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg");  \r
             ShellStatus = SHELL_INVALID_PARAMETER;\r
           }\r
           CurrentOperation.Type = BcfgTypeAddp;\r
           CurrentParam = ShellCommandLineGetRawValue(Package, ++ParamNumber);\r
           if (CurrentParam == NULL || !ShellIsHexOrDecimalNumber(CurrentParam, TRUE, FALSE)) {\r
-            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellBcfgHiiHandle, CurrentParam);\r
+            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam);  \r
             ShellStatus = SHELL_INVALID_PARAMETER;\r
           } else {\r
             Status = ShellConvertStringToUint64(CurrentParam, &Intermediate, TRUE, FALSE);\r
@@ -1318,20 +1325,20 @@ ShellCommandRunBcfg (
           }\r
         } else if (gUnicodeCollation->StriColl(gUnicodeCollation, (CHAR16*)CurrentParam, L"addh") == 0)    {\r
           if ((ParamNumber + 3) >= ShellCommandLineGetCount(Package)) {\r
-            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle);\r
+            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg");  \r
             ShellStatus = SHELL_INVALID_PARAMETER;\r
           }\r
           CurrentOperation.Type = BcfgTypeAddh;\r
           CurrentParam = ShellCommandLineGetRawValue(Package, ++ParamNumber);\r
           if (CurrentParam == NULL || !ShellIsHexOrDecimalNumber(CurrentParam, TRUE, FALSE)) {\r
-            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellBcfgHiiHandle, CurrentParam);\r
+            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam);  \r
             ShellStatus = SHELL_INVALID_PARAMETER;\r
           } else {\r
             Status = ShellConvertStringToUint64(CurrentParam, &Intermediate, TRUE, FALSE);\r
             CurrentOperation.Number1     = (UINT16)Intermediate;\r
             CurrentParam = ShellCommandLineGetRawValue(Package, ++ParamNumber);\r
             if (CurrentParam == NULL || !ShellIsHexOrDecimalNumber(CurrentParam, TRUE, FALSE)) {\r
-              ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellBcfgHiiHandle, CurrentParam);\r
+              ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam);  \r
               ShellStatus = SHELL_INVALID_PARAMETER;\r
             } else {\r
               Status = ShellConvertStringToUint64(CurrentParam, &Intermediate, TRUE, FALSE);\r
@@ -1342,42 +1349,42 @@ ShellCommandRunBcfg (
           }\r
         } else if (gUnicodeCollation->StriColl(gUnicodeCollation, (CHAR16*)CurrentParam, L"rm") == 0)      {\r
           if ((ParamNumber + 1) >= ShellCommandLineGetCount(Package)) {\r
-            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle);\r
+            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg");  \r
             ShellStatus = SHELL_INVALID_PARAMETER;\r
           }\r
           CurrentOperation.Type = BcfgTypeRm;\r
           CurrentParam = ShellCommandLineGetRawValue(Package, ++ParamNumber);\r
           if (CurrentParam == NULL || !ShellIsHexOrDecimalNumber(CurrentParam, TRUE, FALSE)) {\r
-            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellBcfgHiiHandle, CurrentParam);\r
+            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam);  \r
             ShellStatus = SHELL_INVALID_PARAMETER;\r
           } else {\r
             Status = ShellConvertStringToUint64(CurrentParam, &Intermediate, TRUE, FALSE);\r
             CurrentOperation.Number1     = (UINT16)Intermediate;\r
-            if (CurrentOperation.Number1 > Count){\r
-              ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_NUMB_RANGE), gShellBcfgHiiHandle, Count);\r
+            if (CurrentOperation.Number1 >= Count){\r
+              ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_NUMB_RANGE), gShellBcfgHiiHandle, L"bcfg", Count);  \r
               ShellStatus = SHELL_INVALID_PARAMETER;\r
             }\r
           }\r
         } else if (gUnicodeCollation->StriColl(gUnicodeCollation, (CHAR16*)CurrentParam, L"mv") == 0)      {\r
           if ((ParamNumber + 2) >= ShellCommandLineGetCount(Package)) {\r
-            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle);\r
+            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellBcfgHiiHandle, L"bcfg");  \r
             ShellStatus = SHELL_INVALID_PARAMETER;\r
           }\r
           CurrentOperation.Type = BcfgTypeMv;\r
           CurrentParam = ShellCommandLineGetRawValue(Package, ++ParamNumber);\r
           if (CurrentParam == NULL || !ShellIsHexOrDecimalNumber(CurrentParam, TRUE, FALSE)) {\r
-            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellBcfgHiiHandle, CurrentParam);\r
+            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam);  \r
             ShellStatus = SHELL_INVALID_PARAMETER;\r
           } else {\r
             Status = ShellConvertStringToUint64(CurrentParam, &Intermediate, TRUE, FALSE);\r
             CurrentOperation.Number1     = (UINT16)Intermediate;\r
-            if (CurrentOperation.Number1 > Count){\r
-              ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_NUMB_RANGE), gShellBcfgHiiHandle, Count);\r
+            if (CurrentOperation.Number1 >= Count){\r
+              ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_NUMB_RANGE), L"bcfg", gShellBcfgHiiHandle, Count);  \r
               ShellStatus = SHELL_INVALID_PARAMETER;\r
             } else {\r
               CurrentParam = ShellCommandLineGetRawValue(Package, ++ParamNumber);\r
               if (CurrentParam == NULL || !ShellIsHexOrDecimalNumber(CurrentParam, TRUE, FALSE)) {\r
-                ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellBcfgHiiHandle, CurrentParam);\r
+                ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam);  \r
                 ShellStatus = SHELL_INVALID_PARAMETER;\r
               } else {\r
                 Status = ShellConvertStringToUint64(CurrentParam, &Intermediate, TRUE, FALSE);\r
@@ -1386,13 +1393,13 @@ ShellCommandRunBcfg (
               if (CurrentOperation.Number2 == CurrentOperation.Number1\r
                 ||CurrentOperation.Number2 >= Count\r
                ){\r
-                ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_NUMB_RANGE), gShellBcfgHiiHandle, Count);\r
+                ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_NUMB_RANGE), gShellBcfgHiiHandle, L"bcfg", Count);  \r
                 ShellStatus = SHELL_INVALID_PARAMETER;\r
               }\r
             }\r
           }\r
         } else {\r
-          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellBcfgHiiHandle, CurrentParam);\r
+          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellBcfgHiiHandle, L"bcfg", CurrentParam);  \r
           ShellStatus = SHELL_INVALID_PARAMETER;\r
         }\r
       }\r
@@ -1502,7 +1509,7 @@ BcfgLibraryRegisterBcfgCommand (
   IN CONST CHAR16      *Name\r
   )\r
 {\r
-  if (gShellBcfgHiiHandle) {\r
+  if (gShellBcfgHiiHandle != NULL) {\r
     return (EFI_SUCCESS);\r
   }\r
 \r