\r
CHAR16 VariableName[] = L"MyIfrNVData";\r
CHAR16 MyEfiVar[] = L"MyEfiVar";\r
+CHAR16 MyEfiBitVar[] = L"MyEfiBitVar";\r
+CHAR16 MyEfiUnionVar[] = L"MyEfiUnionVar";\r
+\r
EFI_HANDLE DriverHandle[2] = {NULL, NULL};\r
DRIVER_SAMPLE_PRIVATE_DATA *mPrivateData = NULL;\r
EFI_EVENT mEvent;\r
if (HiiIsConfigHdrMatch(Request, &gDriverSampleFormSetGuid, MyEfiVar)) {\r
return EFI_UNSUPPORTED;\r
}\r
+ if (HiiIsConfigHdrMatch(Request, &gDriverSampleFormSetGuid, MyEfiBitVar)) {\r
+ return EFI_UNSUPPORTED;\r
+ }\r
+ if (HiiIsConfigHdrMatch(Request, &gDriverSampleFormSetGuid, MyEfiUnionVar)) {\r
+ return EFI_UNSUPPORTED;\r
+ }\r
+\r
//\r
// Set Request to the unified request string.\r
//\r
if (HiiIsConfigHdrMatch(Configuration, &gDriverSampleFormSetGuid, MyEfiVar)) {\r
return EFI_UNSUPPORTED;\r
}\r
+ if (HiiIsConfigHdrMatch(Configuration, &gDriverSampleFormSetGuid, MyEfiBitVar)) {\r
+ return EFI_UNSUPPORTED;\r
+ }\r
+ if (HiiIsConfigHdrMatch(Configuration, &gDriverSampleFormSetGuid, MyEfiUnionVar)) {\r
+ return EFI_UNSUPPORTED;\r
+ }\r
\r
//\r
// Get Buffer Storage data from EFI variable\r
}\r
break;\r
\r
+ case 0x6666:\r
+ Value->u8 = 12;\r
+ break;\r
+\r
default:\r
Status = EFI_UNSUPPORTED;\r
break;\r
Value->u8 = DEFAULT_CLASS_MANUFACTURING_VALUE;\r
break;\r
\r
+ case 0x6666:\r
+ Value->u8 = 13;\r
+ break;\r
+\r
default:\r
Status = EFI_UNSUPPORTED; \r
break;\r
EFI_STRING ConfigRequestHdr;\r
EFI_STRING NameRequestHdr;\r
MY_EFI_VARSTORE_DATA *VarStoreConfig;\r
+ MY_EFI_BITS_VARSTORE_DATA *BitsVarStoreConfig;\r
+ MY_EFI_UNION_DATA *UnionConfig;\r
EFI_INPUT_KEY HotKey;\r
EDKII_FORM_BROWSER_EXTENSION_PROTOCOL *FormBrowserEx;\r
\r
}\r
FreePool (ConfigRequestHdr);\r
\r
+ //\r
+ // Initialize Bits efi varstore configuration data\r
+ //\r
+ BitsVarStoreConfig = &mPrivateData->BitsVarStoreConfig;\r
+ ZeroMem (BitsVarStoreConfig, sizeof (MY_EFI_BITS_VARSTORE_DATA));\r
+\r
+ ConfigRequestHdr = HiiConstructConfigHdr (&gDriverSampleFormSetGuid, MyEfiBitVar, DriverHandle[0]);\r
+ ASSERT (ConfigRequestHdr != NULL);\r
+\r
+ BufferSize = sizeof (MY_EFI_BITS_VARSTORE_DATA);\r
+ Status = gRT->GetVariable (MyEfiBitVar, &gDriverSampleFormSetGuid, NULL, &BufferSize, BitsVarStoreConfig);\r
+ if (EFI_ERROR (Status)) {\r
+ //\r
+ // Store zero data to EFI variable Storage.\r
+ //\r
+ Status = gRT->SetVariable(\r
+ MyEfiBitVar,\r
+ &gDriverSampleFormSetGuid,\r
+ EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,\r
+ sizeof (MY_EFI_BITS_VARSTORE_DATA),\r
+ BitsVarStoreConfig\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ DriverSampleUnload (ImageHandle);\r
+ return Status;\r
+ }\r
+ //\r
+ // EFI variable for NV config doesn't exit, we should build this variable\r
+ // based on default values stored in IFR\r
+ //\r
+ ActionFlag = HiiSetToDefaults (ConfigRequestHdr, EFI_HII_DEFAULT_CLASS_STANDARD);\r
+ if (!ActionFlag) {\r
+ DriverSampleUnload (ImageHandle);\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+ } else {\r
+ //\r
+ // EFI variable does exist and Validate Current Setting\r
+ //\r
+ ActionFlag = HiiValidateSettings (ConfigRequestHdr);\r
+ if (!ActionFlag) {\r
+ DriverSampleUnload (ImageHandle);\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+ }\r
+ FreePool (ConfigRequestHdr);\r
+\r
+ //\r
+ // Initialize Union efi varstore configuration data\r
+ //\r
+ UnionConfig = &mPrivateData->UnionConfig;\r
+ ZeroMem (UnionConfig, sizeof (MY_EFI_UNION_DATA));\r
+\r
+ ConfigRequestHdr = HiiConstructConfigHdr (&gDriverSampleFormSetGuid, MyEfiUnionVar, DriverHandle[0]);\r
+ ASSERT (ConfigRequestHdr != NULL);\r
+\r
+ BufferSize = sizeof (MY_EFI_UNION_DATA);\r
+ Status = gRT->GetVariable (MyEfiUnionVar, &gDriverSampleFormSetGuid, NULL, &BufferSize, UnionConfig);\r
+ if (EFI_ERROR (Status)) {\r
+ //\r
+ // Store zero data to EFI variable Storage.\r
+ //\r
+ Status = gRT->SetVariable(\r
+ MyEfiUnionVar,\r
+ &gDriverSampleFormSetGuid,\r
+ EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,\r
+ sizeof (MY_EFI_UNION_DATA),\r
+ UnionConfig\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ DriverSampleUnload (ImageHandle);\r
+ return Status;\r
+ }\r
+ //\r
+ // EFI variable for NV config doesn't exit, we should build this variable\r
+ // based on default values stored in IFR\r
+ //\r
+ ActionFlag = HiiSetToDefaults (ConfigRequestHdr, EFI_HII_DEFAULT_CLASS_STANDARD);\r
+ if (!ActionFlag) {\r
+ DriverSampleUnload (ImageHandle);\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+ } else {\r
+ //\r
+ // EFI variable does exist and Validate Current Setting\r
+ //\r
+ ActionFlag = HiiValidateSettings (ConfigRequestHdr);\r
+ if (!ActionFlag) {\r
+ DriverSampleUnload (ImageHandle);\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+ }\r
+ FreePool (ConfigRequestHdr);\r
+\r
Status = gBS->CreateEventEx (\r
EVT_NOTIFY_SIGNAL, \r
TPL_NOTIFY,\r