Add Example for EFI_BROWSER_ACTION_RETRIEVE callback
[efi/edk2/.git] / edk2 / MdeModulePkg / Universal / DriverSampleDxe / DriverSample.c
index a3aa251..d40d60d 100644 (file)
@@ -556,6 +556,7 @@ DriverCallback (
   EFI_IFR_GUID_LABEL              *EndLabel;\r
   EFI_INPUT_KEY                   Key;\r
   DRIVER_SAMPLE_CONFIGURATION     *Configuration;\r
+  UINTN                           MyVarSize;\r
 \r
   if (Action == EFI_BROWSER_ACTION_FORM_OPEN) {\r
     //\r
@@ -624,7 +625,6 @@ DriverCallback (
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
-\r
   Status = EFI_SUCCESS;\r
   PrivateData = DRIVER_SAMPLE_PRIVATE_FROM_THIS (This);\r
 \r
@@ -821,12 +821,13 @@ DriverCallback (
     // Change an EFI Variable storage (MyEfiVar) asynchronous, this will cause\r
     // the first statement in Form 3 be suppressed\r
     //\r
+    MyVarSize = 1;\r
     MyVar = 111;\r
     Status = gRT->SetVariable(\r
                     L"MyVar",\r
                     &mFormSetGuid,\r
                     EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,\r
-                    1,\r
+                    MyVarSize,\r
                     &MyVar\r
                     );\r
     break;\r
@@ -870,6 +871,21 @@ DriverCallback (
 \r
     break;\r
 \r
+  case 0x1111:\r
+    //\r
+    // EfiVarstore question takes sample action (print value as debug information) \r
+    // after read/write question.\r
+    //\r
+    MyVarSize = 1;\r
+    Status = gRT->GetVariable(\r
+                    L"MyVar",\r
+                    &mFormSetGuid,\r
+                    NULL,\r
+                    &MyVarSize,\r
+                    &MyVar\r
+                    );\r
+    ASSERT_EFI_ERROR (Status);\r
+    DEBUG ((DEBUG_INFO, "EfiVarstore question: Tall value is %d with value width %d\n", MyVar, MyVarSize));\r
   default:\r
     break;\r
   }\r