Update DriverSample and PlatDriOverrideDxe driver to correct the return value for ConfigAccess ExtractConfig interface.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8365 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
lgao4 2009-05-21 05:05:59 +00:00
parent 14073b3f8c
commit de482998ed
2 changed files with 20 additions and 26 deletions

View File

@ -22,6 +22,10 @@ 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;
@ -342,7 +346,6 @@ ExtractConfig (
UINTN BufferSize; UINTN BufferSize;
DRIVER_SAMPLE_PRIVATE_DATA *PrivateData; DRIVER_SAMPLE_PRIVATE_DATA *PrivateData;
EFI_HII_CONFIG_ROUTING_PROTOCOL *HiiConfigRouting; EFI_HII_CONFIG_ROUTING_PROTOCOL *HiiConfigRouting;
EFI_STRING ConfigRequestHdr;
EFI_STRING ConfigRequest; EFI_STRING ConfigRequest;
UINTN Size; UINTN Size;
@ -352,7 +355,6 @@ ExtractConfig (
// //
// Initialize the local variables. // Initialize the local variables.
// //
ConfigRequestHdr = NULL;
ConfigRequest = NULL; ConfigRequest = NULL;
Size = 0; Size = 0;
*Progress = Request; *Progress = Request;
@ -373,7 +375,7 @@ ExtractConfig (
&PrivateData->Configuration &PrivateData->Configuration
); );
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
return Status; return EFI_NOT_FOUND;
} }
if (Request == NULL) { if (Request == NULL) {
@ -381,34 +383,23 @@ ExtractConfig (
// Request is set to NULL, construct full request string. // Request is set to NULL, construct full request string.
// //
//
// First Set ConfigRequestHdr string.
//
ConfigRequestHdr = HiiConstructConfigHdr (&mFormSetGuid, VariableName, PrivateData->DriverHandle[0]);
ASSERT (ConfigRequestHdr != NULL);
// //
// 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 (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16); Size = (StrLen (mDriverSampleConfigHdr) + 32 + 1) * sizeof (CHAR16);
ConfigRequest = AllocateZeroPool (Size); ConfigRequest = AllocateZeroPool (Size);
UnicodeSPrint (ConfigRequest, Size, L"%s&OFFSET=0&WIDTH=%016LX", ConfigRequestHdr, (UINT64)BufferSize); UnicodeSPrint (ConfigRequest, Size, L"%s&OFFSET=0&WIDTH=%016LX", mDriverSampleConfigHdr, (UINT64)BufferSize);
FreePool (ConfigRequestHdr);
} else { } else {
ConfigRequest = Request;
}
// //
// Check routing data in <ConfigHdr>. // Check routing data in <ConfigHdr>.
// Note: if only one Storage is used, then this checking could be skipped. // Note: if only one Storage is used, then this checking could be skipped.
// //
if (!HiiIsConfigHdrMatch (ConfigRequest, &mFormSetGuid, VariableName)) { if (!HiiIsConfigHdrMatch (Request, &mFormSetGuid, VariableName)) {
if (Request == NULL) {
FreePool (ConfigRequest);
}
return EFI_NOT_FOUND; return EFI_NOT_FOUND;
} }
ConfigRequest = Request;
}
// //
// Convert buffer data to <ConfigResp> by helper function BlockToConfig() // Convert buffer data to <ConfigResp> by helper function BlockToConfig()

View File

@ -1219,10 +1219,14 @@ PlatOverMngrRouteConfig (
return EFI_NOT_FOUND; return EFI_NOT_FOUND;
} }
*Progress = Configuration + StrLen (Configuration);
Private = EFI_CALLBACK_INFO_FROM_THIS (This); Private = EFI_CALLBACK_INFO_FROM_THIS (This);
FakeNvData = &Private->FakeNvData; FakeNvData = &Private->FakeNvData;
if (!HiiGetBrowserData (&mPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData)) { if (!HiiGetBrowserData (&mPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData)) {
return EFI_NOT_FOUND; //
// FakeNvData can't be got from SetupBrowser, which doesn't need to be set.
//
return EFI_SUCCESS;
} }
if (mCurrentPage == FORM_ID_DRIVER) { if (mCurrentPage == FORM_ID_DRIVER) {
@ -1242,7 +1246,6 @@ PlatOverMngrRouteConfig (
CommintChanges (Private, KeyValue, FakeNvData); CommintChanges (Private, KeyValue, FakeNvData);
} }
*Progress = Configuration + StrLen (Configuration);
return EFI_SUCCESS; return EFI_SUCCESS;
} }