]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Update HiiLib to copy all IfrOpcode, not Opcode by Opcode.
authorlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 17 Apr 2009 05:28:31 +0000 (05:28 +0000)
committerlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 17 Apr 2009 05:28:31 +0000 (05:28 +0000)
Update DriverSampleDxe to use new UEFI 2.1 classguid

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8114 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Library/UefiHiiLib/HiiLib.c
MdeModulePkg/Universal/DriverSampleDxe/NVDataStruc.h
MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr

index e1d8a64730fc789f1241ac0cd9a7ece777ac6ab6..d36828a1158ebd90fd0ca4081df211fd7e4d7ffc 100644 (file)
@@ -2191,8 +2191,7 @@ InternalHiiUpdateFormPackageData (
   BOOLEAN                   GetFormSet;\r
   BOOLEAN                   GetForm;\r
   BOOLEAN                   Updated;\r
-  EFI_IFR_OP_HEADER         *AddOpCode;\r
-  UINT32                    UpdatePackageLength;\r
+  UINTN                     UpdatePackageLength;\r
 \r
   CopyMem (TempPackage, Package, sizeof (EFI_HII_PACKAGE_HEADER));\r
   UpdatePackageLength = sizeof (EFI_HII_PACKAGE_HEADER);\r
@@ -2230,7 +2229,7 @@ InternalHiiUpdateFormPackageData (
     //\r
     // The matched Form is found, and Update data in this form\r
     //\r
-    if (GetFormSet && GetForm && !Updated) {\r
+    if (GetFormSet && GetForm) {\r
       UpdateIfrOpHdr = (EFI_IFR_OP_HEADER *) OpCodeBufferStart->Buffer;\r
       if ((UpdateIfrOpHdr->Length == IfrOpHdr->Length) && \\r
           (CompareMem (IfrOpHdr, UpdateIfrOpHdr, UpdateIfrOpHdr->Length) == 0)) {\r
@@ -2263,22 +2262,14 @@ InternalHiiUpdateFormPackageData (
             return EFI_NOT_FOUND;\r
           }\r
         }\r
+\r
         //\r
         // Insert the updated data\r
         //\r
-        UpdateIfrOpHdr = (EFI_IFR_OP_HEADER *) OpCodeBufferStart->Buffer;\r
-        AddSize        = UpdateIfrOpHdr->Length;\r
-        AddOpCode      = (EFI_IFR_OP_HEADER *) (OpCodeBufferStart->Buffer + AddSize);\r
-        while (AddSize < OpCodeBufferStart->Position) {\r
-          CopyMem (BufferPos, AddOpCode, AddOpCode->Length);\r
-          BufferPos           += AddOpCode->Length;\r
-          UpdatePackageLength += AddOpCode->Length;\r
-          \r
-          AddSize   += AddOpCode->Length;\r
-          AddOpCode  = (EFI_IFR_OP_HEADER *) (OpCodeBufferStart->Buffer + AddSize);\r
-        }\r
-\r
-        ASSERT (AddSize == OpCodeBufferStart->Position);\r
+        AddSize = ((EFI_IFR_OP_HEADER *) OpCodeBufferStart->Buffer)->Length;\r
+        CopyMem (BufferPos, OpCodeBufferStart->Buffer + AddSize, OpCodeBufferStart->Position - AddSize);\r
+        BufferPos           += OpCodeBufferStart->Position - AddSize;\r
+        UpdatePackageLength += OpCodeBufferStart->Position - AddSize;\r
 \r
         if (OpCodeBufferEnd != NULL) {\r
           //\r
@@ -2288,10 +2279,19 @@ InternalHiiUpdateFormPackageData (
           BufferPos           += IfrOpHdr->Length;\r
           UpdatePackageLength += IfrOpHdr->Length;\r
         }\r
+\r
+        //\r
+        // Copy the left package data.\r
+        //\r
+        Offset += IfrOpHdr->Length;\r
+        CopyMem (BufferPos, (UINT8 *) Package + Offset, PackageHeader.Length - Offset);\r
+        UpdatePackageLength += PackageHeader.Length - Offset;\r
+\r
         //\r
         // Set update flag\r
         //\r
         Updated = TRUE;\r
+        break;\r
       }\r
     }\r
 \r
@@ -2311,7 +2311,7 @@ InternalHiiUpdateFormPackageData (
   //\r
   // Update the package length.\r
   //\r
-  PackageHeader.Length = UpdatePackageLength;\r
+  PackageHeader.Length = (UINT32) UpdatePackageLength;\r
   CopyMem (TempPackage, &PackageHeader, sizeof (EFI_HII_PACKAGE_HEADER));\r
 \r
   return EFI_SUCCESS;\r
index 162c5ecd1f54f8cb6720ff5a0e53ef71f14d9c83..0a5d46bc96fb9e63248e605dae91ab49939a2c2d 100644 (file)
@@ -25,6 +25,8 @@ Revision History:
 #ifndef _NVDATASTRUC_H_\r
 #define _NVDATASTRUC_H_\r
 \r
+#include <Guid/HiiPlatformSetupFormset.h>\r
+\r
 #define FORMSET_GUID \\r
   { \\r
     0xA04A27f4, 0xDF00, 0x4D42, {0xB5, 0x52, 0x39, 0x51, 0x13, 0x02, 0x11, 0x3D} \\r
index fc6b5da766c143d000290754bc6188e6c592d8b1..71a4c910572d18321413ea3e44ab595bd9d1b6e3 100644 (file)
 #define LABEL_UPDATE_BBS            0x2222\r
 \r
 formset\r
-  guid     = FORMSET_GUID,\r
-  title    = STRING_TOKEN(STR_FORM_SET_TITLE),\r
-  help     = STRING_TOKEN(STR_FORM_SET_TITLE_HELP),\r
-  class    = EFI_ON_BOARD_DEVICE_CLASS,\r
-  subclass = EFI_SETUP_APPLICATION_SUBCLASS,\r
+  guid      = FORMSET_GUID,\r
+  title     = STRING_TOKEN(STR_FORM_SET_TITLE),\r
+  help      = STRING_TOKEN(STR_FORM_SET_TITLE_HELP),\r
+  classguid = EFI_HII_PLATFORM_SETUP_FORMSET_GUID,\r
   \r
   //\r
   // Notes: VfrCompiler will insert a Standard Default Storage declaration \r