+++ /dev/null
-/** @file\r
- HII Library implementation that uses DXE protocols and services.\r
-\r
- Copyright (c) 2006, Intel Corporation<BR>\r
- All rights reserved. This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-**/\r
-\r
-\r
-#include <FrameworkDxe.h>\r
-\r
-#include <Protocol/FrameworkHii.h>\r
-\r
-#include <Library/DebugLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-\r
-EFI_HII_PROTOCOL *gHiiProtocol = NULL;\r
-\r
-/**\r
- The constructor function for HiiLibFramework library instance\r
-\r
- The constructor function locates Hii protocol from protocol database.\r
- It will ASSERT() if that operation fails and it will always return EFI_SUCCESS.\r
-\r
- @param ImageHandle The firmware allocated handle for the EFI image.\r
- @param SystemTable A pointer to the EFI System Table.\r
-\r
- @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-HiiLibFrameworkConstructor (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
- )\r
-{\r
- EFI_STATUS Status;\r
-\r
- Status = gBS->LocateProtocol (\r
- &gEfiHiiProtocolGuid,\r
- NULL,\r
- (VOID **) &gHiiProtocol\r
- );\r
- ASSERT_EFI_ERROR (Status);\r
-\r
- return Status; \r
-}\r
-\r
-/**\r
- This function allocates pool for an EFI_HII_PACKAGES structure\r
- with enough space for the variable argument list of package pointers.\r
- The allocated structure is initialized using NumberOfPackages, Guid,\r
- and the variable length argument list of package pointers.\r
-\r
- @param NumberOfPackages The number of HII packages to prepare.\r
- @param Guid Package GUID.\r
- @param Args Package contents\r
-\r
- @return The allocated and initialized packages.\r
-\r
-**/\r
-EFI_HII_PACKAGES *\r
-InternalPreparePackages (\r
- IN UINTN NumberOfPackages,\r
- IN CONST EFI_GUID *Guid OPTIONAL,\r
- IN VA_LIST Args\r
- )\r
-{\r
- EFI_HII_PACKAGES *HiiPackages;\r
- VOID **Package;\r
- UINTN Index;\r
-\r
- ASSERT (NumberOfPackages > 0);\r
-\r
- HiiPackages = AllocateZeroPool (sizeof (EFI_HII_PACKAGES) + NumberOfPackages * sizeof (VOID *));\r
- ASSERT (HiiPackages != NULL);\r
-\r
- HiiPackages->GuidId = (EFI_GUID *) Guid;\r
- HiiPackages->NumberOfPackages = NumberOfPackages;\r
- Package = (VOID **) (((UINT8 *) HiiPackages) + sizeof (EFI_HII_PACKAGES));\r
-\r
- for (Index = 0; Index < NumberOfPackages; Index++) {\r
- *Package = VA_ARG (Args, VOID *);\r
- Package++;\r
- }\r
-\r
- return HiiPackages;\r
-}\r
-\r
-\r