2 Var Check Hii generation from Hii Database.
4 Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15 #include "VarCheckHiiGen.h"
18 Generate from Hii Database.
22 VarCheckHiiGenFromHiiDatabase (
29 EFI_PHYSICAL_ADDRESS BufferAddress
;
30 EFI_HII_DATABASE_PROTOCOL
*HiiDatabase
;
33 // Locate HII Database protocol
35 Status
= gBS
->LocateProtocol (&gEfiHiiDatabaseProtocolGuid
, NULL
, (VOID
**) &HiiDatabase
);
36 if (EFI_ERROR (Status
)) {
41 // Call first time with zero buffer length.
42 // Should fail with EFI_BUFFER_TOO_SMALL.
46 Status
= HiiDatabase
->ExportPackageLists (HiiDatabase
, 0, &BufferSize
, Buffer
);
47 if (Status
== EFI_BUFFER_TOO_SMALL
) {
49 // Allocate buffer to hold the HII Database.
51 Status
= gBS
->AllocatePages (AllocateAnyPages
, EfiBootServicesData
, EFI_SIZE_TO_PAGES (BufferSize
), &BufferAddress
);
52 ASSERT_EFI_ERROR (Status
);
53 Buffer
= (VOID
*) (UINTN
) BufferAddress
;
56 // Export HII Database into the buffer.
58 Status
= HiiDatabase
->ExportPackageLists (HiiDatabase
, 0, &BufferSize
, Buffer
);
59 ASSERT_EFI_ERROR (Status
);
61 DEBUG ((EFI_D_INFO
, "VarCheckHiiGenDxeFromHii - HII Database exported at 0x%x, size = 0x%x\n", Buffer
, BufferSize
));
65 DumpHiiDatabase (Buffer
, BufferSize
);
69 VarCheckParseHiiDatabase (Buffer
, BufferSize
);
71 gBS
->FreePages (BufferAddress
, EFI_SIZE_TO_PAGES (BufferSize
));