Correct DriverSample ConfigAcess protocol ExtractConfig interface.

Correct SetupBrowser to set default value for default sting ID.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8660 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
lgao4 2009-06-25 09:08:30 +00:00
parent cab302fd4c
commit 086cd2c8e9
2 changed files with 22 additions and 13 deletions

View File

@ -22,11 +22,6 @@ EFI_GUID mFormSetGuid = FORMSET_GUID;
EFI_GUID mInventoryGuid = INVENTORY_GUID; EFI_GUID mInventoryGuid = INVENTORY_GUID;
CHAR16 VariableName[] = L"MyIfrNVData"; CHAR16 VariableName[] = L"MyIfrNVData";
//
// <ConfigHdr> Template
//
CONST CHAR16 mDriverSampleConfigHdr[] = L"GUID=00000000000000000000000000000000&NAME=0000&PATH=00";
EFI_HANDLE DriverHandle[2] = {NULL, NULL}; EFI_HANDLE DriverHandle[2] = {NULL, NULL};
DRIVER_SAMPLE_PRIVATE_DATA *PrivateData = NULL; DRIVER_SAMPLE_PRIVATE_DATA *PrivateData = NULL;
@ -347,17 +342,19 @@ ExtractConfig (
DRIVER_SAMPLE_PRIVATE_DATA *PrivateData; DRIVER_SAMPLE_PRIVATE_DATA *PrivateData;
EFI_HII_CONFIG_ROUTING_PROTOCOL *HiiConfigRouting; EFI_HII_CONFIG_ROUTING_PROTOCOL *HiiConfigRouting;
EFI_STRING ConfigRequest; EFI_STRING ConfigRequest;
EFI_STRING ConfigRequestHdr;
UINTN Size; UINTN Size;
if (Progress == NULL || Results == NULL) { if (Progress == NULL || Results == NULL || Request == NULL) {
return EFI_INVALID_PARAMETER; return EFI_INVALID_PARAMETER;
} }
// //
// Initialize the local variables. // Initialize the local variables.
// //
ConfigRequest = NULL; ConfigRequestHdr = NULL;
Size = 0; ConfigRequest = NULL;
*Progress = Request; Size = 0;
*Progress = Request;
PrivateData = DRIVER_SAMPLE_PRIVATE_FROM_THIS (This); PrivateData = DRIVER_SAMPLE_PRIVATE_FROM_THIS (This);
HiiConfigRouting = PrivateData->HiiConfigRouting; HiiConfigRouting = PrivateData->HiiConfigRouting;
@ -387,9 +384,11 @@ ExtractConfig (
// Allocate and fill a buffer large enough to hold the <ConfigHdr> template // Allocate and fill a buffer large enough to hold the <ConfigHdr> template
// followed by "&OFFSET=0&WIDTH=WWWWWWWWWWWWWWWW" followed by a Null-terminator // followed by "&OFFSET=0&WIDTH=WWWWWWWWWWWWWWWW" followed by a Null-terminator
// //
Size = (StrLen (mDriverSampleConfigHdr) + 32 + 1) * sizeof (CHAR16); ConfigRequestHdr = HiiConstructConfigHdr (&mFormSetGuid, VariableName, PrivateData->DriverHandle[0]);
Size = (StrLen (ConfigRequest) + 32 + 1) * sizeof (CHAR16);
ConfigRequest = AllocateZeroPool (Size); ConfigRequest = AllocateZeroPool (Size);
UnicodeSPrint (ConfigRequest, Size, L"%s&OFFSET=0&WIDTH=%016LX", mDriverSampleConfigHdr, (UINT64)BufferSize); UnicodeSPrint (ConfigRequest, Size, L"%s&OFFSET=0&WIDTH=%016LX", ConfigRequestHdr, (UINT64)BufferSize);
FreePool (ConfigRequestHdr);
} else { } else {
// //
// Check routing data in <ConfigHdr>. // Check routing data in <ConfigHdr>.
@ -822,7 +821,7 @@ DriverSampleInit (
DRIVER_SAMPLE_CONFIGURATION *Configuration; DRIVER_SAMPLE_CONFIGURATION *Configuration;
BOOLEAN ActionFlag; BOOLEAN ActionFlag;
EFI_STRING ConfigRequestHdr; EFI_STRING ConfigRequestHdr;
// //
// Initialize the local variables. // Initialize the local variables.
// //

View File

@ -1779,8 +1779,10 @@ GetQuestionDefault (
QUESTION_OPTION *Option; QUESTION_OPTION *Option;
EFI_HII_VALUE *HiiValue; EFI_HII_VALUE *HiiValue;
UINT8 Index; UINT8 Index;
EFI_STRING StrValue;
Status = EFI_SUCCESS; Status = EFI_SUCCESS;
StrValue = NULL;
// //
// Statement don't have storage, skip them // Statement don't have storage, skip them
@ -1823,6 +1825,14 @@ GetQuestionDefault (
CopyMem (HiiValue, &Default->Value, sizeof (EFI_HII_VALUE)); CopyMem (HiiValue, &Default->Value, sizeof (EFI_HII_VALUE));
} }
if (HiiValue->Type == EFI_IFR_TYPE_STRING) {
StrValue = HiiGetString (FormSet->HiiHandle, HiiValue->Value.string, NULL);
if (StrValue == NULL) {
return EFI_NOT_FOUND;
}
Question->BufferValue = AllocateCopyPool (StrSize (StrValue), StrValue);
}
return EFI_SUCCESS; return EFI_SUCCESS;
} }