mirror of https://github.com/acidanthera/audk.git
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:
parent
6924b7ae26
commit
d91c7bf9e4
|
@ -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;
|
||||||
|
|
|
@ -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} \
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue