+++ /dev/null
-/** @file\r
-\r
- This file contains utility functions by HII Thunk Modules.\r
- \r
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
-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
-#ifndef _HII_THUNK_UTILITY_H_\r
-#define _HII_THUNK_UTILITY_H_\r
-\r
-/**\r
- \r
- This function returns a list of the package handles of the \r
- specified type that are currently active in the HII database. The \r
- pseudo-type EFI_HII_PACKAGE_TYPE_ALL will cause all package \r
- handles to be listed.\r
-\r
- If HandleBufferLength is NULL, then ASSERT.\r
- If HandleBuffer is NULL, the ASSERT.\r
- If PackageType is EFI_HII_PACKAGE_TYPE_GUID and PackageGuid is\r
- NULL, then ASSERT.\r
- If PackageType is not EFI_HII_PACKAGE_TYPE_GUID and PackageGuid is not\r
- NULL, then ASSERT.\r
- \r
- \r
- @param PackageType Specifies the package type of the packages\r
- to list or EFI_HII_PACKAGE_TYPE_ALL for\r
- all packages to be listed.\r
- \r
- @param PackageGuid If PackageType is\r
- EFI_HII_PACKAGE_TYPE_GUID, then this is\r
- the pointer to the GUID which must match\r
- the Guid field of\r
- EFI_HII_PACKAGE_GUID_HEADER. Otherwise, it\r
- must be NULL.\r
- \r
- @param HandleBufferLength On output, the length of the handle buffer\r
- that is required for the handles found.\r
-\r
- @param HandleBuffer On output, an array of EFI_HII_HANDLE instances returned.\r
- The caller is responcible to free this pointer allocated.\r
-\r
- @retval EFI_SUCCESS The matching handles are outputted successfully.\r
- HandleBufferLength is updated with the actual length.\r
- @retval EFI_OUT_OF_RESOURCES Not enough resource to complete the operation.\r
- @retval EFI_NOT_FOUND No matching handle could not be found in database.\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-ListPackageLists (\r
- IN UINT8 PackageType,\r
- IN CONST EFI_GUID *PackageGuid,\r
- IN OUT UINTN *HandleBufferLength,\r
- OUT EFI_HII_HANDLE **HandleBuffer\r
- )\r
-;\r
-\r
-/**\r
- Exports the contents of one or all package lists in the HII database into a buffer.\r
-\r
- If Handle is not NULL and not a valid EFI_HII_HANDLE registered in the database, \r
- then ASSERT.\r
- If PackageListHeader is NULL, then ASSERT.\r
- If PackageListSize is NULL, then ASSERT.\r
-\r
- @param Handle The HII Handle.\r
- @param PackageListHeader A pointer to a buffer that will contain the results of \r
- the export function.\r
- @param PackageListSize On output, the length of the buffer that is required for the exported data.\r
-\r
- @retval EFI_SUCCESS Package exported.\r
-\r
- @retval EFI_OUT_OF_RESOURCES Not enought memory to complete the operations.\r
-\r
-**/\r
-EFI_STATUS \r
-EFIAPI\r
-ExportPackageLists (\r
- IN EFI_HII_HANDLE Handle,\r
- OUT EFI_HII_PACKAGE_LIST_HEADER **PackageListHeader,\r
- OUT UINTN *PackageListSize\r
- )\r
-;\r
-\r
-/**\r
- Extract Hii package list GUID for given HII handle.\r
-\r
- If HiiHandle could not be found in the HII database, then ASSERT.\r
- If Guid is NULL, then ASSERT.\r
-\r
- @param Handle Hii handle\r
- @param Guid Package list GUID\r
-\r
- @retval EFI_SUCCESS Successfully extract GUID from Hii database.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-ExtractGuidFromHiiHandle (\r
- IN EFI_HII_HANDLE Handle,\r
- OUT EFI_GUID *Guid\r
- )\r
-;\r
-\r
-/**\r
- Find the corressponding UEFI HII Handle from a Framework HII Handle given.\r
-\r
- @param Private The HII Thunk Module Private context.\r
- @param FwHiiHandle The Framemwork HII Handle.\r
-\r
- @return NULL If Framework HII Handle is invalid.\r
- @return The corresponding UEFI HII Handle.\r
-**/\r
-EFI_HII_HANDLE\r
-FwHiiHandleToUefiHiiHandle (\r
- IN CONST HII_THUNK_PRIVATE_DATA *Private,\r
- IN FRAMEWORK_EFI_HII_HANDLE FwHiiHandle\r
- );\r
-\r
-/**\r
- Find the corressponding HII Thunk Context from a Framework HII Handle given.\r
-\r
- @param Private The HII Thunk Module Private context.\r
- @param FwHiiHandle The Framemwork HII Handle.\r
-\r
- @return NULL If Framework HII Handle is invalid.\r
- @return The corresponding HII Thunk Context.\r
-**/\r
-HII_THUNK_CONTEXT *\r
-FwHiiHandleToThunkContext (\r
- IN CONST HII_THUNK_PRIVATE_DATA *Private,\r
- IN FRAMEWORK_EFI_HII_HANDLE FwHiiHandle\r
- );\r
-\r
-/**\r
- Find the corressponding HII Thunk Context from a UEFI HII Handle given.\r
-\r
- @param Private The HII Thunk Module Private context.\r
- @param UefiHiiHandle The UEFI HII Handle.\r
-\r
- @return NULL If UEFI HII Handle is invalid.\r
- @return The corresponding HII Thunk Context.\r
-**/\r
-HII_THUNK_CONTEXT *\r
-UefiHiiHandleToThunkContext (\r
- IN CONST HII_THUNK_PRIVATE_DATA *Private,\r
- IN EFI_HII_HANDLE UefiHiiHandle\r
- );\r
-\r
-/**\r
- Find the corressponding HII Thunk Context from a Tag GUID.\r
-\r
- @param Private The HII Thunk Module Private context.\r
- @param Guid The Tag GUID.\r
-\r
- @return NULL No HII Thunk Context matched the Tag GUID.\r
- @return The corresponding HII Thunk Context.\r
-**/\r
-HII_THUNK_CONTEXT *\r
-TagGuidToIfrPackThunkContext (\r
- IN CONST HII_THUNK_PRIVATE_DATA *Private,\r
- IN CONST EFI_GUID *Guid\r
- );\r
-\r
-/**\r
- This function create a HII_THUNK_CONTEXT for the input UEFI HiiHandle\r
- that is created when a package list registered by a module calling \r
- EFI_HII_DATABASE_PROTOCOL.NewPackageList. \r
- This function records the PackageListGuid of EFI_HII_PACKAGE_LIST_HEADER \r
- into the TagGuid of the created HII_THUNK_CONTEXT.\r
-\r
- @param UefiHiiHandle The UEFI HII Handle.\r
- \r
- @return the new created Hii thunk context.\r
-\r
-**/\r
-HII_THUNK_CONTEXT *\r
-CreateThunkContextForUefiHiiHandle (\r
- IN EFI_HII_HANDLE UefiHiiHandle\r
- );\r
-\r
-/**\r
- Clean up the HII Thunk Context for a UEFI HII Handle.\r
-\r
- @param Private The HII Thunk Module Private context.\r
- @param UefiHiiHandle The UEFI HII Handle.\r
-\r
-**/\r
-VOID\r
-DestroyThunkContextForUefiHiiHandle (\r
- IN HII_THUNK_PRIVATE_DATA *Private,\r
- IN EFI_HII_HANDLE UefiHiiHandle\r
- );\r
-\r
-/**\r
- Get the number of HII Package for a Package type.\r
-\r
- @param PackageListHeader The Package List.\r
- @param PackageType The Package Type.\r
-\r
- @return The number of Package for given type.\r
-**/\r
-UINTN\r
-GetPackageCountByType (\r
- IN CONST EFI_HII_PACKAGE_LIST_HEADER *PackageListHeader,\r
- IN UINT8 PackageType\r
- );\r
-\r
-/**\r
- Creat a Thunk Context.\r
-\r
- ASSERT if no FormSet Opcode is found.\r
-\r
- @param Private The HII Thunk Private Context.\r
- @param StringPackageCount The String package count.\r
- @param IfrPackageCount The IFR Package count.\r
-\r
- @return A newly created Thunk Context.\r
- @retval NULL No resource to create a new Thunk Context.\r
-**/\r
-HII_THUNK_CONTEXT *\r
-CreateThunkContext (\r
- IN HII_THUNK_PRIVATE_DATA *Private,\r
- IN UINTN StringPackageCount,\r
- IN UINTN IfrPackageCount\r
- );\r
-\r
-/**\r
- Destroy the Thunk Context and free up all resource.\r
-\r
- @param ThunkContext The HII Thunk Private Context to be freed.\r
-\r
-**/\r
-VOID\r
-DestroyThunkContext (\r
- IN HII_THUNK_CONTEXT *ThunkContext\r
- );\r
-\r
-/**\r
- Get FormSet GUID.\r
-\r
- ASSERT if no FormSet Opcode is found.\r
-\r
- @param Packages Form Framework Package.\r
- @param FormSetGuid Return the FormSet Guid.\r
-\r
-**/\r
-VOID\r
-GetFormSetGuid (\r
- IN EFI_HII_PACKAGE_HEADER *Package,\r
- OUT EFI_GUID *FormSetGuid\r
- );\r
-\r
-/**\r
- Get the Form Package from a Framework Package List.\r
-\r
- @param Packages Framework Package List.\r
-\r
- @return The Form Package Header found.\r
-**/\r
-EFI_HII_PACKAGE_HEADER *\r
-GetIfrPackage (\r
- IN CONST EFI_HII_PACKAGES *Packages\r
- );\r
-\r
-/**\r
- Parse the Form Package and build a FORM_BROWSER_FORMSET structure.\r
-\r
- @param UefiHiiHandle PackageList Handle\r
-\r
- @return A pointer to FORM_BROWSER_FORMSET.\r
-\r
-**/\r
-FORM_BROWSER_FORMSET *\r
-ParseFormSet (\r
- IN EFI_HII_HANDLE UefiHiiHandle\r
- );\r
-\r
-#endif\r