Update the logic, based on the device path and formset guid to find the HiiHandle.

Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14828 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Eric Dong
2013-11-07 07:38:05 +00:00
committed by ydong10
parent 9da3888456
commit 07d7dbaeba
3 changed files with 125 additions and 133 deletions

View File

@@ -2036,11 +2036,7 @@ GetQuestionValueFromForm (
)
{
EFI_STATUS Status;
EFI_HANDLE DriverHandle;
EFI_HANDLE Handle;
EFI_HII_HANDLE *HiiHandles;
EFI_HII_HANDLE HiiHandle;
UINTN Index;
FORM_BROWSER_STATEMENT *Question;
FORM_BROWSER_FORMSET *FormSet;
FORM_BROWSER_FORM *Form;
@@ -2054,7 +2050,6 @@ GetQuestionValueFromForm (
(DevicePath == NULL && InputHiiHandle != NULL) );
GetTheVal = TRUE;
DriverHandle = NULL;
HiiHandle = NULL;
Question = NULL;
Form = NULL;
@@ -2063,38 +2058,10 @@ GetQuestionValueFromForm (
// Get HiiHandle.
//
if (DevicePath != NULL) {
//
// 1. Get Driver handle.
//
Status = gBS->LocateDevicePath (
&gEfiDevicePathProtocolGuid,
&DevicePath,
&DriverHandle
);
if (EFI_ERROR (Status) || (DriverHandle == NULL)) {
HiiHandle = DevicePathToHiiHandle (DevicePath, FormSetGuid);
if (HiiHandle == NULL) {
return FALSE;
}
//
// 2. Get Hii handle
//
HiiHandles = HiiGetHiiHandles (NULL);
if (HiiHandles == NULL) {
return FALSE;
}
for (Index = 0; HiiHandles[Index] != NULL; Index++) {
Status = mHiiDatabase->GetPackageListHandle (
mHiiDatabase,
HiiHandles[Index],
&Handle
);
if (!EFI_ERROR (Status) && (Handle == DriverHandle)) {
HiiHandle = HiiHandles[Index];
break;
}
}
FreePool (HiiHandles);
} else {
HiiHandle = InputHiiHandle;
}