HII Library Class interface refine.
The "HiiLib" prefix for all HII Library API function names changed to "Hii". Remove: HiiLibPreparePackageList(), replaced by HiiAddPackages() HiiLibNewString(), replaced by HiiSetString() HiiLibGetStringFromHandle(), replaced by HiiGetString() HiiLibGetStringFromToken(), replaced by HiiGetPackageString() HiiLibExtractGuidFromHiiHandle() HiiLibDevicePathToHiiHandle() HiiLibGetSupportedSecondaryLanguages() HiiLibGetSupportedLanguageNumber() HiiLibExportPackageLists() HiiLibListPackageLists() Interface change: HiiAddPackages() HiiSetString() HiiGetString() HiiGetHiiHandles() git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8083 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -108,17 +108,15 @@ UpdateCheckBoxStringToken (
|
||||
{
|
||||
CHAR16 Str[MAXIMUM_VALUE_CHARACTERS];
|
||||
EFI_STRING_ID Id;
|
||||
EFI_STATUS Status;
|
||||
|
||||
ASSERT (Statement != NULL);
|
||||
ASSERT (Statement->Operand == EFI_IFR_NUMERIC_OP);
|
||||
|
||||
UnicodeValueToString (Str, 0, Statement->VarStoreInfo.VarName, MAXIMUM_VALUE_CHARACTERS - 1);
|
||||
|
||||
Status = HiiLibNewString (FormSet->HiiHandle, &Id, Str);
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
Id = HiiSetString (FormSet->HiiHandle, 0, Str, NULL);
|
||||
if (Id == 0) {
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
|
||||
Statement->VarStoreInfo.VarName = Id;
|
||||
|
@@ -525,7 +525,6 @@ InitializeSetup (
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_HII_PACKAGE_LIST_HEADER *PackageList;
|
||||
|
||||
//
|
||||
// Locate required Hii relative protocols
|
||||
@@ -554,15 +553,13 @@ InitializeSetup (
|
||||
//
|
||||
// Publish our HII data
|
||||
//
|
||||
PackageList = HiiLibPreparePackageList (1, &gSetupBrowserGuid, SetupBrowserStrings);
|
||||
ASSERT (PackageList != NULL);
|
||||
Status = mHiiDatabase->NewPackageList (
|
||||
mHiiDatabase,
|
||||
PackageList,
|
||||
ImageHandle,
|
||||
&gHiiHandle
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
gHiiHandle = HiiAddPackages (
|
||||
&gSetupBrowserGuid,
|
||||
ImageHandle,
|
||||
SetupBrowserStrings,
|
||||
NULL
|
||||
);
|
||||
ASSERT (gHiiHandle != NULL);
|
||||
|
||||
//
|
||||
// Initialize Driver private data
|
||||
@@ -603,11 +600,9 @@ NewString (
|
||||
)
|
||||
{
|
||||
EFI_STRING_ID StringId;
|
||||
EFI_STATUS Status;
|
||||
|
||||
StringId = 0;
|
||||
Status = HiiLibNewString (HiiHandle, &StringId, String);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
StringId = HiiSetString (HiiHandle, 0, String, NULL);
|
||||
ASSERT (StringId != 0);
|
||||
|
||||
return StringId;
|
||||
}
|
||||
@@ -631,7 +626,8 @@ DeleteString (
|
||||
CHAR16 NullChar;
|
||||
|
||||
NullChar = CHAR_NULL;
|
||||
return HiiLibSetString (HiiHandle, StringId, &NullChar);
|
||||
HiiSetString (HiiHandle, StringId, &NullChar, NULL);
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@@ -651,29 +647,11 @@ GetToken (
|
||||
IN EFI_HII_HANDLE HiiHandle
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
CHAR16 *String;
|
||||
UINTN BufferLength;
|
||||
EFI_STRING String;
|
||||
|
||||
//
|
||||
// Set default string size assumption at no more than 256 bytes
|
||||
//
|
||||
BufferLength = 0x100;
|
||||
String = AllocateZeroPool (BufferLength);
|
||||
String = HiiGetString (HiiHandle, Token, NULL);
|
||||
ASSERT (String != NULL);
|
||||
|
||||
Status = HiiLibGetString (HiiHandle, Token, String, &BufferLength);
|
||||
|
||||
if (Status == EFI_BUFFER_TOO_SMALL) {
|
||||
FreePool (String);
|
||||
String = AllocateZeroPool (BufferLength);
|
||||
ASSERT (String != NULL);
|
||||
|
||||
Status = HiiLibGetString (HiiHandle, Token, String, &BufferLength);
|
||||
}
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
return String;
|
||||
return (CHAR16 *) String;
|
||||
}
|
||||
|
||||
|
||||
|
@@ -41,6 +41,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#include <Library/MemoryAllocationLib.h>
|
||||
#include <Library/HiiLib.h>
|
||||
#include <Library/PcdLib.h>
|
||||
#include <Library/DevicePathLib.h>
|
||||
|
||||
#include "Colors.h"
|
||||
|
||||
|
@@ -59,7 +59,8 @@
|
||||
DebugLib
|
||||
PrintLib
|
||||
HiiLib
|
||||
|
||||
DevicePathLib
|
||||
|
||||
[Guids]
|
||||
gEfiIfrTianoGuid ## CONSUMES ## GUID
|
||||
gEfiIfrFrameworkGuid ## CONSUMES ## GUID
|
||||
|
@@ -1448,6 +1448,102 @@ AdjustDateAndTimePosition (
|
||||
return PadLineNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
Find HII Handle in the 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
|
||||
DevicePathToHiiHandle (
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_DEVICE_PATH_PROTOCOL *TmpDevicePath;
|
||||
UINTN BufferSize;
|
||||
UINTN HandleCount;
|
||||
UINTN Index;
|
||||
EFI_HANDLE Handle;
|
||||
EFI_HANDLE DriverHandle;
|
||||
EFI_HII_HANDLE *HiiHandles;
|
||||
EFI_HII_HANDLE HiiHandle;
|
||||
|
||||
ASSERT (DevicePath != NULL);
|
||||
|
||||
TmpDevicePath = DevicePath;
|
||||
//
|
||||
// Locate Device Path Protocol handle buffer
|
||||
//
|
||||
Status = gBS->LocateDevicePath (
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
&TmpDevicePath,
|
||||
&DriverHandle
|
||||
);
|
||||
if (EFI_ERROR (Status) || !IsDevicePathEnd (TmpDevicePath)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
//
|
||||
// Retrieve all HII Handles from HII database
|
||||
//
|
||||
BufferSize = 0x1000;
|
||||
HiiHandles = AllocatePool (BufferSize);
|
||||
ASSERT (HiiHandles != NULL);
|
||||
Status = mHiiDatabase->ListPackageLists (
|
||||
mHiiDatabase,
|
||||
EFI_HII_PACKAGE_TYPE_ALL,
|
||||
NULL,
|
||||
&BufferSize,
|
||||
HiiHandles
|
||||
);
|
||||
if (Status == EFI_BUFFER_TOO_SMALL) {
|
||||
FreePool (HiiHandles);
|
||||
HiiHandles = AllocatePool (BufferSize);
|
||||
ASSERT (HiiHandles != NULL);
|
||||
|
||||
Status = mHiiDatabase->ListPackageLists (
|
||||
mHiiDatabase,
|
||||
EFI_HII_PACKAGE_TYPE_ALL,
|
||||
NULL,
|
||||
&BufferSize,
|
||||
HiiHandles
|
||||
);
|
||||
}
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
FreePool (HiiHandles);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
//
|
||||
// Search Hii Handle by Driver Handle
|
||||
//
|
||||
HiiHandle = NULL;
|
||||
HandleCount = BufferSize / sizeof (EFI_HII_HANDLE);
|
||||
for (Index = 0; Index < HandleCount; Index++) {
|
||||
Status = mHiiDatabase->GetPackageListHandle (
|
||||
mHiiDatabase,
|
||||
HiiHandles[Index],
|
||||
&Handle
|
||||
);
|
||||
if (!EFI_ERROR (Status) && (Handle == DriverHandle)) {
|
||||
HiiHandle = HiiHandles[Index];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
FreePool (HiiHandles);
|
||||
return HiiHandle;
|
||||
}
|
||||
|
||||
/**
|
||||
Display menu and wait for user to select one menu option, then return it.
|
||||
@@ -2382,7 +2478,7 @@ UiDisplayMenu (
|
||||
}
|
||||
}
|
||||
|
||||
Selection->Handle = HiiLibDevicePathToHiiHandle (DevicePath);
|
||||
Selection->Handle = DevicePathToHiiHandle (DevicePath);
|
||||
if (Selection->Handle == NULL) {
|
||||
//
|
||||
// If target Hii Handle not found, exit
|
||||
|
Reference in New Issue
Block a user