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