Change the HiiDataBase and browser codes to support new efi varstore data structure.

Signed-off-by:ydong10
Reviewed-by:lgao4



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12009 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
ydong10
2011-07-12 07:24:36 +00:00
parent d23610ebbc
commit cce6230ffb
5 changed files with 951 additions and 325 deletions

View File

@@ -329,7 +329,8 @@ InitializeConfigHdr (
{
CHAR16 *Name;
if (Storage->Type == EFI_HII_VARSTORE_BUFFER) {
if (Storage->Type == EFI_HII_VARSTORE_BUFFER ||
Storage->Type == EFI_HII_VARSTORE_EFI_VARIABLE_BUFFER) {
Name = Storage->Name;
} else {
Name = NULL;
@@ -395,7 +396,8 @@ InitializeRequestElement (
//
// Prepare <RequestElement>
//
if (Storage->Type == EFI_HII_VARSTORE_BUFFER) {
if (Storage->Type == EFI_HII_VARSTORE_BUFFER ||
Storage->Type == EFI_HII_VARSTORE_EFI_VARIABLE_BUFFER) {
StrLen = UnicodeSPrint (
RequestElement,
30 * sizeof (CHAR16),
@@ -1480,11 +1482,32 @@ ParseOpCodes (
// Create a EFI variable Storage for this FormSet
//
Storage = CreateStorage (FormSet);
Storage->Type = EFI_HII_VARSTORE_EFI_VARIABLE;
CopyMem (&Storage->VarStoreId, &((EFI_IFR_VARSTORE_EFI *) OpCodeData)->VarStoreId, sizeof (EFI_VARSTORE_ID));
CopyMem (&Storage->Guid, &((EFI_IFR_VARSTORE_EFI *) OpCodeData)->Guid, sizeof (EFI_GUID));
CopyMem (&Storage->Attributes, &((EFI_IFR_VARSTORE_EFI *) OpCodeData)->Attributes, sizeof (UINT32));
CopyMem (&Storage->Size, &((EFI_IFR_VARSTORE_EFI *) OpCodeData)->Size, sizeof (UINT16));
if (OpCodeLength < sizeof (EFI_IFR_VARSTORE_EFI)) {
Storage->Type = EFI_HII_VARSTORE_EFI_VARIABLE;
break;
}
Storage->Type = EFI_HII_VARSTORE_EFI_VARIABLE_BUFFER;
Storage->Buffer = AllocateZeroPool (Storage->Size);
Storage->EditBuffer = AllocateZeroPool (Storage->Size);
AsciiString = (CHAR8 *) ((EFI_IFR_VARSTORE_EFI *) OpCodeData)->Name;
Storage->Name = AllocateZeroPool (AsciiStrSize (AsciiString) * 2);
ASSERT (Storage->Name != NULL);
for (Index = 0; AsciiString[Index] != 0; Index++) {
Storage->Name[Index] = (CHAR16) AsciiString[Index];
}
//
// Initialize <ConfigHdr>
//
InitializeConfigHdr (FormSet, Storage);
break;
//