Update HiiLib to copy all IfrOpcode, not Opcode by Opcode.

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
This commit is contained in:
lgao4 2009-04-17 05:28:31 +00:00
parent 6924b7ae26
commit d91c7bf9e4
3 changed files with 23 additions and 22 deletions

View File

@ -2191,8 +2191,7 @@ InternalHiiUpdateFormPackageData (
BOOLEAN GetFormSet; BOOLEAN GetFormSet;
BOOLEAN GetForm; BOOLEAN GetForm;
BOOLEAN Updated; BOOLEAN Updated;
EFI_IFR_OP_HEADER *AddOpCode; UINTN UpdatePackageLength;
UINT32 UpdatePackageLength;
CopyMem (TempPackage, Package, sizeof (EFI_HII_PACKAGE_HEADER)); CopyMem (TempPackage, Package, sizeof (EFI_HII_PACKAGE_HEADER));
UpdatePackageLength = sizeof (EFI_HII_PACKAGE_HEADER); UpdatePackageLength = sizeof (EFI_HII_PACKAGE_HEADER);
@ -2230,7 +2229,7 @@ InternalHiiUpdateFormPackageData (
// //
// The matched Form is found, and Update data in this form // The matched Form is found, and Update data in this form
// //
if (GetFormSet && GetForm && !Updated) { if (GetFormSet && GetForm) {
UpdateIfrOpHdr = (EFI_IFR_OP_HEADER *) OpCodeBufferStart->Buffer; UpdateIfrOpHdr = (EFI_IFR_OP_HEADER *) OpCodeBufferStart->Buffer;
if ((UpdateIfrOpHdr->Length == IfrOpHdr->Length) && \ if ((UpdateIfrOpHdr->Length == IfrOpHdr->Length) && \
(CompareMem (IfrOpHdr, UpdateIfrOpHdr, UpdateIfrOpHdr->Length) == 0)) { (CompareMem (IfrOpHdr, UpdateIfrOpHdr, UpdateIfrOpHdr->Length) == 0)) {
@ -2263,22 +2262,14 @@ InternalHiiUpdateFormPackageData (
return EFI_NOT_FOUND; return EFI_NOT_FOUND;
} }
} }
// //
// Insert the updated data // Insert the updated data
// //
UpdateIfrOpHdr = (EFI_IFR_OP_HEADER *) OpCodeBufferStart->Buffer; AddSize = ((EFI_IFR_OP_HEADER *) OpCodeBufferStart->Buffer)->Length;
AddSize = UpdateIfrOpHdr->Length; CopyMem (BufferPos, OpCodeBufferStart->Buffer + AddSize, OpCodeBufferStart->Position - AddSize);
AddOpCode = (EFI_IFR_OP_HEADER *) (OpCodeBufferStart->Buffer + AddSize); BufferPos += OpCodeBufferStart->Position - AddSize;
while (AddSize < OpCodeBufferStart->Position) { UpdatePackageLength += OpCodeBufferStart->Position - AddSize;
CopyMem (BufferPos, AddOpCode, AddOpCode->Length);
BufferPos += AddOpCode->Length;
UpdatePackageLength += AddOpCode->Length;
AddSize += AddOpCode->Length;
AddOpCode = (EFI_IFR_OP_HEADER *) (OpCodeBufferStart->Buffer + AddSize);
}
ASSERT (AddSize == OpCodeBufferStart->Position);
if (OpCodeBufferEnd != NULL) { if (OpCodeBufferEnd != NULL) {
// //
@ -2288,10 +2279,19 @@ InternalHiiUpdateFormPackageData (
BufferPos += IfrOpHdr->Length; BufferPos += IfrOpHdr->Length;
UpdatePackageLength += IfrOpHdr->Length; UpdatePackageLength += IfrOpHdr->Length;
} }
//
// Copy the left package data.
//
Offset += IfrOpHdr->Length;
CopyMem (BufferPos, (UINT8 *) Package + Offset, PackageHeader.Length - Offset);
UpdatePackageLength += PackageHeader.Length - Offset;
// //
// Set update flag // Set update flag
// //
Updated = TRUE; Updated = TRUE;
break;
} }
} }
@ -2311,7 +2311,7 @@ InternalHiiUpdateFormPackageData (
// //
// Update the package length. // Update the package length.
// //
PackageHeader.Length = UpdatePackageLength; PackageHeader.Length = (UINT32) UpdatePackageLength;
CopyMem (TempPackage, &PackageHeader, sizeof (EFI_HII_PACKAGE_HEADER)); CopyMem (TempPackage, &PackageHeader, sizeof (EFI_HII_PACKAGE_HEADER));
return EFI_SUCCESS; return EFI_SUCCESS;

View File

@ -25,6 +25,8 @@ Revision History:
#ifndef _NVDATASTRUC_H_ #ifndef _NVDATASTRUC_H_
#define _NVDATASTRUC_H_ #define _NVDATASTRUC_H_
#include <Guid/HiiPlatformSetupFormset.h>
#define FORMSET_GUID \ #define FORMSET_GUID \
{ \ { \
0xA04A27f4, 0xDF00, 0x4D42, {0xB5, 0x52, 0x39, 0x51, 0x13, 0x02, 0x11, 0x3D} \ 0xA04A27f4, 0xDF00, 0x4D42, {0xB5, 0x52, 0x39, 0x51, 0x13, 0x02, 0x11, 0x3D} \

View File

@ -51,11 +51,10 @@
#define LABEL_UPDATE_BBS 0x2222 #define LABEL_UPDATE_BBS 0x2222
formset formset
guid = FORMSET_GUID, guid = FORMSET_GUID,
title = STRING_TOKEN(STR_FORM_SET_TITLE), title = STRING_TOKEN(STR_FORM_SET_TITLE),
help = STRING_TOKEN(STR_FORM_SET_TITLE_HELP), help = STRING_TOKEN(STR_FORM_SET_TITLE_HELP),
class = EFI_ON_BOARD_DEVICE_CLASS, classguid = EFI_HII_PLATFORM_SETUP_FORMSET_GUID,
subclass = EFI_SETUP_APPLICATION_SUBCLASS,
// //
// Notes: VfrCompiler will insert a Standard Default Storage declaration // Notes: VfrCompiler will insert a Standard Default Storage declaration