]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Get entire variable data for efi varstore at first time.
authorEric Dong <eric.dong@intel.com>
Tue, 17 Dec 2013 05:00:17 +0000 (05:00 +0000)
committerydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 17 Dec 2013 05:00:17 +0000 (05:00 +0000)
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@14992 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Universal/SetupBrowserDxe/Setup.c

index 66238e055f29b3949dd91ce6e5e4468c1c15a5f6..c7c7f9ae43eb780aede99081c6d567d51693f717 100644 (file)
@@ -4085,6 +4085,10 @@ LoadStorage (
   EFI_STRING  Progress;\r
   EFI_STRING  Result;\r
   CHAR16      *StrPtr;\r
+  EFI_STRING  ConfigRequest;\r
+  UINTN       StrLen;\r
+\r
+  ConfigRequest = NULL;\r
 \r
   switch (Storage->BrowserStorage->Type) {\r
     case EFI_HII_VARSTORE_EFI_VARIABLE:\r
@@ -4095,6 +4099,21 @@ LoadStorage (
         ConfigRequestAdjust(Storage);\r
         return;\r
       }\r
+\r
+      //\r
+      // Create the config request string to get all fields for this storage.\r
+      // Allocate and fill a buffer large enough to hold the <ConfigHdr> template\r
+      // followed by "&OFFSET=0&WIDTH=WWWW"followed by a Null-terminator\r
+      //\r
+      StrLen = StrSize (Storage->BrowserStorage->ConfigHdr) + 20 * sizeof (CHAR16);\r
+      ConfigRequest = AllocateZeroPool (StrLen);\r
+      ASSERT (ConfigRequest != NULL);\r
+      UnicodeSPrint (\r
+                 ConfigRequest, \r
+                 StrLen, \r
+                 L"%s&OFFSET=0&WIDTH=%04x", \r
+                 Storage->BrowserStorage->ConfigHdr,\r
+                 Storage->BrowserStorage->Size);\r
       break;\r
 \r
     case EFI_HII_VARSTORE_BUFFER:\r
@@ -4106,6 +4125,7 @@ LoadStorage (
         return;\r
       }\r
       Storage->BrowserStorage->Initialized = TRUE;\r
+      ConfigRequest = Storage->ConfigRequest;\r
       break;\r
 \r
     default:\r
@@ -4117,7 +4137,7 @@ LoadStorage (
   //\r
   Status = mHiiConfigRouting->ExtractConfig (\r
                                     mHiiConfigRouting,\r
-                                    Storage->ConfigRequest,\r
+                                    ConfigRequest,\r
                                     &Progress,\r
                                     &Result\r
                                     );\r
@@ -4146,6 +4166,12 @@ LoadStorage (
   // Input NULL for ConfigRequest field means sync all fields from editbuffer to buffer. \r
   //\r
   SynchronizeStorage(FormSet, Storage->BrowserStorage, NULL, TRUE);\r
+\r
+  if (Storage->BrowserStorage->Type == EFI_HII_VARSTORE_EFI_VARIABLE_BUFFER) {\r
+    if (ConfigRequest != NULL) {\r
+      FreePool (ConfigRequest);\r
+    }\r
+  }\r
 }\r
 \r
 /**\r