summaryrefslogtreecommitdiff
path: root/MdePkg/Library/HiiLib/HiiLib.c
diff options
context:
space:
mode:
Diffstat (limited to 'MdePkg/Library/HiiLib/HiiLib.c')
-rw-r--r--MdePkg/Library/HiiLib/HiiLib.c123
1 files changed, 118 insertions, 5 deletions
diff --git a/MdePkg/Library/HiiLib/HiiLib.c b/MdePkg/Library/HiiLib/HiiLib.c
index b0c28e2..749b004 100644
--- a/MdePkg/Library/HiiLib/HiiLib.c
+++ b/MdePkg/Library/HiiLib/HiiLib.c
@@ -23,10 +23,6 @@ BOOLEAN mHiiProtocolsInitialized = FALSE;
This function locate Hii relative protocols for later usage.
- @param VOID
-
- @retval VOID
-
**/
VOID
LocateHiiProtocols (
@@ -50,10 +46,28 @@ LocateHiiProtocols (
+/**
+ This funciton build the package list based on the package number,
+ the GUID of the package list and the list of pointer which point to
+ package header that defined by UEFI VFR compiler and StringGather
+ tool.
+
+ If there is not enough resource for the new package list,
+ the function will ASSERT.
+
+ @param NumberOfPackages The number of packages be
+ @param GuidId The GUID for the package list to be generated.
+ @param Marker The variable argument list. Each entry represent a specific package header that is
+ generated by VFR compiler and StrGather tool. The first 4 bytes is a UINT32 value
+ that indicate the overall length of the package.
+
+ @return The pointer to the package list header.
+
+**/
EFI_HII_PACKAGE_LIST_HEADER *
InternalHiiLibPreparePackages (
IN UINTN NumberOfPackages,
- IN CONST EFI_GUID *GuidId, OPTIONAL
+ IN CONST EFI_GUID *GuidId,
VA_LIST Marker
)
{
@@ -106,6 +120,20 @@ InternalHiiLibPreparePackages (
return PackageListHeader;
}
+/**
+ Assemble EFI_HII_PACKAGE_LIST according to the passed in packages.
+
+ If GuidId is NULL, then ASSERT.
+ If not enough resource to complete the operation, then ASSERT.
+
+ @param NumberOfPackages Number of packages.
+ @param GuidId Package GUID.
+ @param ... Variable argument list for packages to be assembled.
+
+ @return EFI_HII_PACKAGE_LIST_HEADER Pointer of EFI_HII_PACKAGE_LIST_HEADER. The function will ASSERT if system has
+ not enough resource to complete the operation.
+
+**/
EFI_HII_PACKAGE_LIST_HEADER *
EFIAPI
HiiLibPreparePackageList (
@@ -127,6 +155,30 @@ HiiLibPreparePackageList (
}
+/**
+ This function allocates pool for an EFI_HII_PACKAGE_LIST structure
+ with additional space that is big enough to host all packages described by the variable
+ argument list of package pointers. The allocated structure is initialized using NumberOfPackages,
+ GuidId, and the variable length argument list of package pointers.
+
+ Then, EFI_HII_PACKAGE_LIST will be register to the default System HII Database. The
+ Handle to the newly registered Package List is returned throught HiiHandle.
+
+ If HiiHandle is NULL, then ASSERT.
+
+ @param NumberOfPackages The number of HII packages to register.
+ @param GuidId Package List GUID ID.
+ @param DriverHandle Optional. If not NULL, the DriverHandle on which an instance of DEVICE_PATH_PROTOCOL is installed.
+ This DriverHandle uniquely defines the device that the added packages are associated with.
+ @param HiiHandle On output, the HiiHandle is update with the handle which can be used to retrieve the Package
+ List later. If the functions failed to add the package to the default HII database, this value will
+ be set to NULL.
+ @param ... The variable argument list describing all HII Package.
+
+ @return EFI_SUCCESS If the packages are successfully added to the default HII database.
+ @return EFI_OUT_OF_RESOURCE Not enough resource to complete the operation.
+
+**/
EFI_STATUS
EFIAPI
HiiLibAddPackages (
@@ -161,6 +213,18 @@ HiiLibAddPackages (
return Status;
}
+/**
+ Removes a package list from the default HII database.
+
+ If HiiHandle is NULL, then ASSERT.
+ If HiiHandle is not a valid EFI_HII_HANDLE in the default HII database, then ASSERT.
+
+ @param HiiHandle The handle that was previously registered to the data base that is requested for removal.
+ List later.
+
+ @return VOID
+
+**/
VOID
EFIAPI
HiiLibRemovePackages (
@@ -177,6 +241,21 @@ HiiLibRemovePackages (
}
+/**
+ Determines the handles that are currently active in the database.
+ It's the caller's responsibility to free handle buffer.
+
+ If HandleBufferLength is NULL, then ASSERT.
+ If HiiHandleBuffer is NULL, then ASSERT.
+
+ @param HandleBufferLength On input, a pointer to the length of the handle
+ buffer. On output, the length of the handle buffer
+ that is required for the handles found.
+ @param HiiHandleBuffer Pointer to an array of Hii Handles returned.
+
+ @retval EFI_SUCCESS Get an array of Hii Handles successfully.
+
+**/
EFI_STATUS
EFIAPI
HiiLibGetHiiHandles (
@@ -225,6 +304,18 @@ HiiLibGetHiiHandles (
return Status;
}
+/**
+ Extract Hii package list GUID for given HII handle.
+
+ If HiiHandle could not be found in the default 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
HiiLibExtractGuidFromHiiHandle (
@@ -269,6 +360,19 @@ HiiLibExtractGuidFromHiiHandle (
return EFI_SUCCESS;
}
+/**
+ Find HII Handle in the default HII database associated with given Device Path.
+
+ If DevicePath is NULL, then ASSERT.
+
+ @param DevicePath Device Path associated with the HII package list
+ handle.
+
+ @retval Handle HII package list Handle associated with the Device
+ Path.
+ @retval NULL Hii Package list handle is not found.
+
+**/
EFI_HII_HANDLE
EFIAPI
HiiLibDevicePathToHiiHandle (
@@ -382,6 +486,15 @@ HiiLibDevicePathToHiiHandle (
return HiiHandle;
}
+/**
+ This function check if the Hii Handle is a valid handle registered
+ in the HII database.
+
+ @param HiiHandle The HII Handle.
+
+ @retval TRUE If it is a valid HII handle.
+ @retval FALSE If it is a invalid HII handle.
+**/
BOOLEAN
IsHiiHandleRegistered (
EFI_HII_HANDLE HiiHandle