]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c
Correct DriverSample to produce the ConfigAccess protocol
[mirror_edk2.git] / MdeModulePkg / Universal / DriverSampleDxe / DriverSample.c
index 39e72909daed87a9dfe183f448bf8ce562d66484..784cd28d7a795ea1f58d6f4a5bf6059de9567dd3 100644 (file)
@@ -362,13 +362,16 @@ ExtractConfig (
   // Try to get the current setting from variable.\r
   //\r
   BufferSize = sizeof (DRIVER_SAMPLE_CONFIGURATION);\r
-  gRT->GetVariable (\r
-        VariableName,\r
-        &mFormSetGuid,\r
-        NULL,\r
-        &BufferSize,\r
-        &PrivateData->Configuration\r
-        );\r
+  Status = gRT->GetVariable (\r
+            VariableName,\r
+            &mFormSetGuid,\r
+            NULL,\r
+            &BufferSize,\r
+            &PrivateData->Configuration\r
+            );\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
+  }\r
   \r
   if (Request == NULL) {\r
     //\r
@@ -476,13 +479,16 @@ RouteConfig (
   // Get Buffer Storage data from EFI variable\r
   //\r
   BufferSize = sizeof (DRIVER_SAMPLE_CONFIGURATION);\r
-  gRT->GetVariable (\r
-        VariableName,\r
-        &mFormSetGuid,\r
-        NULL,\r
-        &BufferSize,\r
-        &PrivateData->Configuration\r
-        );\r
+  Status = gRT->GetVariable (\r
+            VariableName,\r
+            &mFormSetGuid,\r
+            NULL,\r
+            &BufferSize,\r
+            &PrivateData->Configuration\r
+            );\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
+  }\r
 \r
   //\r
   // Convert <ConfigResp> to buffer data by helper function ConfigToBlock()\r
@@ -968,6 +974,17 @@ DriverSampleInit (
   BufferSize = sizeof (DRIVER_SAMPLE_CONFIGURATION);\r
   Status = gRT->GetVariable (VariableName, &mFormSetGuid, NULL, &BufferSize, Configuration);\r
   if (EFI_ERROR (Status)) {\r
+    //\r
+    // Store zero data Buffer Storage to EFI variable\r
+    //\r
+    Status = gRT->SetVariable(\r
+                    VariableName,\r
+                    &mFormSetGuid,\r
+                    EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,\r
+                    sizeof (DRIVER_SAMPLE_CONFIGURATION),\r
+                    Configuration\r
+                    );\r
+    ASSERT (Status == EFI_SUCCESS);\r
     //\r
     // EFI variable for NV config doesn't exit, we should build this variable\r
     // based on default values stored in IFR\r