summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Universal/DriverSampleDxe
diff options
context:
space:
mode:
authorqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2008-11-04 14:28:08 +0000
committerqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2008-11-04 14:28:08 +0000
commit8d00a0f1955de7aa4b658009a36df5165d0a75be (patch)
tree1eec5d9bd12036da7ebf1ec38d5f7afbfd2a4e03 /MdeModulePkg/Universal/DriverSampleDxe
parent9185c388a9e992bcbcf38d10fb24321a60950562 (diff)
downloadedk2-platforms-8d00a0f1955de7aa4b658009a36df5165d0a75be.tar.xz
Sync in bug fix from EDK I:
1) issue with setup browser and IFR refresh opcode 2) [HII]HIIConfigRoutingExportConfig generate error format of <MultiConfigAltResp> 3) [HII] ConfigRouting->ExtractConfig() will cause overflow 4) [Hii Database] EFI_HII_DATABASE_NOTIFY should be invoked when a string package is created internally when a new String Token is created 5) [PT]HIIConfigAccessProtocolTest fail on NT32uefi 6) Incorrect HII package types in EDK git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6378 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Universal/DriverSampleDxe')
-rw-r--r--MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c235
-rw-r--r--MdeModulePkg/Universal/DriverSampleDxe/DriverSample.h8
-rw-r--r--MdeModulePkg/Universal/DriverSampleDxe/NVDataStruc.h6
-rw-r--r--MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr97
-rw-r--r--MdeModulePkg/Universal/DriverSampleDxe/VfrStrings.unibin36754 -> 38442 bytes
5 files changed, 244 insertions, 102 deletions
diff --git a/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c b/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c
index 45bfeaffcd..c468bc5900 100644
--- a/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c
+++ b/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c
@@ -1,5 +1,5 @@
/** @file
-Copyright (c) 2004 - 2007, Intel Corporation
+Copyright (c) 2004 - 2008, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -29,6 +29,8 @@ EFI_GUID mInventoryGuid = INVENTORY_GUID;
CHAR16 VariableName[] = L"MyIfrNVData";
+UINT8 VfrMyIfrNVDataBlockName[] = "BugBug";
+
VOID
EncodePassword (
IN CHAR16 *Password,
@@ -260,6 +262,7 @@ ExtractConfig (
HiiConfigRouting = PrivateData->HiiConfigRouting;
//
+ //
// Get Buffer Storage data from EFI variable
//
BufferSize = sizeof (DRIVER_SAMPLE_CONFIGURATION);
@@ -274,6 +277,39 @@ ExtractConfig (
return Status;
}
+ if (Request == NULL) {
+ //
+ // Request is set to NULL, return all configurable elements together with ALTCFG
+ //
+ Status = ConstructConfigAltResp (
+ NULL,
+ NULL,
+ Results,
+ &mFormSetGuid,
+ VariableName,
+ PrivateData->DriverHandle[0],
+ &PrivateData->Configuration,
+ BufferSize,
+ VfrMyIfrNVDataBlockName,
+ 2,
+ STRING_TOKEN (STR_STANDARD_DEFAULT_PROMPT),
+ VfrMyIfrNVDataDefault0000,
+ STRING_TOKEN (STR_MANUFACTURE_DEFAULT_PROMPT),
+ VfrMyIfrNVDataDefault0001
+ );
+
+ return Status;
+ }
+
+ //
+ // Check routing data in <ConfigHdr>.
+ // Note: if only one Storage is used, then this checking could be skipped.
+ //
+ if (!IsConfigHdrMatch (Request, &mFormSetGuid, VariableName)) {
+ *Progress = Request;
+ return EFI_NOT_FOUND;
+ }
+
//
// Convert buffer data to <ConfigResp> by helper function BlockToConfig()
//
@@ -320,9 +356,21 @@ RouteConfig (
DRIVER_SAMPLE_PRIVATE_DATA *PrivateData;
EFI_HII_CONFIG_ROUTING_PROTOCOL *HiiConfigRouting;
+ if (Configuration == NULL) {
+ return EFI_INVALID_PARAMETER;
+ }
+
PrivateData = DRIVER_SAMPLE_PRIVATE_FROM_THIS (This);
HiiConfigRouting = PrivateData->HiiConfigRouting;
+ // Check routing data in <ConfigHdr>.
+ // Note: if only one Storage is used, then this checking could be skipped.
+ //
+ if (!IsConfigHdrMatch (Configuration, &mFormSetGuid, VariableName)) {
+ *Progress = Configuration;
+ return EFI_NOT_FOUND;
+ }
+
//
// Get Buffer Storage data from EFI variable
//
@@ -405,6 +453,7 @@ DriverCallback (
EFI_STATUS Status;
EFI_HII_UPDATE_DATA UpdateData;
IFR_OPTION *IfrOptionList;
+ UINT8 MyVar;
if ((Value == NULL) || (ActionRequest == NULL)) {
return EFI_INVALID_PARAMETER;
@@ -416,12 +465,9 @@ DriverCallback (
switch (QuestionId) {
case 0x1234:
//
- // Create dynamic page for this interactive goto
+ // Initialize the container for dynamic opcodes
//
- UpdateData.BufferSize = 0x1000;
- UpdateData.Offset = 0;
- UpdateData.Data = AllocatePool (0x1000);
- ASSERT (UpdateData.Data != NULL);
+ IfrLibInitUpdateData (&UpdateData, 0x1000);
IfrOptionList = AllocatePool (2 * sizeof (IFR_OPTION));
ASSERT (IfrOptionList != NULL);
@@ -433,62 +479,127 @@ DriverCallback (
IfrOptionList[1].StringToken = STRING_TOKEN (STR_BOOT_OPTION2);
IfrOptionList[1].Value.u8 = 2;
- CreateActionOpCode (
- 0x1237,
- STRING_TOKEN(STR_EXIT_TEXT),
- STRING_TOKEN(STR_EXIT_TEXT),
- EFI_IFR_FLAG_CALLBACK,
- 0,
- &UpdateData
- );
-
- CreateOneOfOpCode (
- 0x8001,
- 0,
- 0,
- STRING_TOKEN (STR_ONE_OF_PROMPT),
- STRING_TOKEN (STR_ONE_OF_HELP),
- EFI_IFR_FLAG_CALLBACK,
- EFI_IFR_NUMERIC_SIZE_1,
- IfrOptionList,
- 2,
- &UpdateData
- );
-
- CreateOrderedListOpCode (
- 0x8002,
- 0,
- 0,
- STRING_TOKEN (STR_BOOT_OPTIONS),
- STRING_TOKEN (STR_BOOT_OPTIONS),
- EFI_IFR_FLAG_RESET_REQUIRED,
- 0,
- EFI_IFR_NUMERIC_SIZE_1,
- 10,
- IfrOptionList,
- 2,
- &UpdateData
- );
-
- CreateGotoOpCode (
- 1,
- STRING_TOKEN (STR_GOTO_FORM1),
- STRING_TOKEN (STR_GOTO_HELP),
- 0,
- 0x8003,
- &UpdateData
- );
-
- Status = IfrLibUpdateForm (
- PrivateData->HiiHandle[0],
- &mFormSetGuid,
- 0x1234,
- 0x1234,
- TRUE,
- &UpdateData
- );
- gBS->FreePool (IfrOptionList);
- gBS->FreePool (UpdateData.Data);
+ CreateActionOpCode (
+ 0x1237, // Question ID
+ STRING_TOKEN(STR_EXIT_TEXT), // Prompt text
+ STRING_TOKEN(STR_EXIT_TEXT), // Help text
+ EFI_IFR_FLAG_CALLBACK, // Question flag
+ 0, // Action String ID
+ &UpdateData // Container for dynamic created opcodes
+ );
+
+ //
+ // Prepare initial value for the dynamic created oneof Question
+ //
+ PrivateData->Configuration.DynamicOneof = 2;
+ Status = gRT->SetVariable(
+ VariableName,
+ &mFormSetGuid,
+ EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,
+ sizeof (DRIVER_SAMPLE_CONFIGURATION),
+ &PrivateData->Configuration
+ );
+ CreateOneOfOpCode (
+ 0x8001, // Question ID (or call it "key")
+ CONFIGURATION_VARSTORE_ID, // VarStore ID
+ DYNAMIC_ONE_OF_VAR_OFFSET, // Offset in Buffer Storage
+ STRING_TOKEN (STR_ONE_OF_PROMPT), // Question prompt text
+ STRING_TOKEN (STR_ONE_OF_HELP), // Question help text
+ EFI_IFR_FLAG_CALLBACK, // Question flag
+ EFI_IFR_NUMERIC_SIZE_1, // Data type of Question Value
+ IfrOptionList, // Option list
+ 2, // Number of options in Option list
+ &UpdateData // Container for dynamic created opcodes
+ );
+
+ CreateOrderedListOpCode (
+ 0x8002, // Question ID
+ CONFIGURATION_VARSTORE_ID, // VarStore ID
+ DYNAMIC_ORDERED_LIST_VAR_OFFSET, // Offset in Buffer Storage
+ STRING_TOKEN (STR_BOOT_OPTIONS), // Question prompt text
+ STRING_TOKEN (STR_BOOT_OPTIONS), // Question help text
+ EFI_IFR_FLAG_RESET_REQUIRED, // Question flag
+ 0, // Ordered list flag, e.g. EFI_IFR_UNIQUE_SET
+ EFI_IFR_NUMERIC_SIZE_1, // Data type of Question value
+ 5, // Maximum container
+ IfrOptionList, // Option list
+ 2, // Number of options in Option list
+ &UpdateData // Container for dynamic created opcodes
+ );
+
+ CreateGotoOpCode (
+ 1, // Target Form ID
+ STRING_TOKEN (STR_GOTO_FORM1), // Prompt text
+ STRING_TOKEN (STR_GOTO_HELP), // Help text
+ 0, // Question flag
+ 0x8003, // Question ID
+ &UpdateData // Container for dynamic created opcodes
+ );
+
+ Status = IfrLibUpdateForm (
+ PrivateData->HiiHandle[0], // HII handle
+ &mFormSetGuid, // Formset GUID
+ 0x1234, // Form ID
+ 0x1234, // Label for where to insert opcodes
+ TRUE, // Append or replace
+ &UpdateData // Dynamic created opcodes
+ );
+ gBS->FreePool (IfrOptionList);
+ IfrLibFreeUpdateData (&UpdateData);
+ break;
+
+ case 0x5678:
+ //
+ // We will reach here once the Question is refreshed
+ //
+ IfrLibInitUpdateData (&UpdateData, 0x1000);
+
+ IfrOptionList = AllocatePool (2 * sizeof (IFR_OPTION));
+ ASSERT (IfrOptionList != NULL);
+
+ CreateActionOpCode (
+ 0x1237, // Question ID
+ STRING_TOKEN(STR_EXIT_TEXT), // Prompt text
+ STRING_TOKEN(STR_EXIT_TEXT), // Help text
+ EFI_IFR_FLAG_CALLBACK, // Question flag
+ 0, // Action String ID
+ &UpdateData // Container for dynamic created opcodes
+ );
+
+ Status = IfrLibUpdateForm (
+ PrivateData->HiiHandle[0], // HII handle
+ &mFormSetGuid, // Formset GUID
+ 3, // Form ID
+ 0x2234, // Label for where to insert opcodes
+ TRUE, // Append or replace
+ &UpdateData // Dynamic created opcodes
+ );
+ IfrLibFreeUpdateData (&UpdateData);
+
+ //
+ // Refresh the Question value
+ //
+ PrivateData->Configuration.DynamicRefresh++;
+ Status = gRT->SetVariable(
+ VariableName,
+ &mFormSetGuid,
+ EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,
+ sizeof (DRIVER_SAMPLE_CONFIGURATION),
+ &PrivateData->Configuration
+ );
+
+ //
+ // Change an EFI Variable storage (MyEfiVar) asynchronous, this will cause
+ // the first statement in Form 3 be suppressed
+ //
+ MyVar = 111;
+ Status = gRT->SetVariable(
+ L"MyVar",
+ &mFormSetGuid,
+ EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,
+ 1,
+ &MyVar
+ );
break;
case 0x1237:
diff --git a/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.h b/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.h
index 0468fbd04f..1489da22ed 100644
--- a/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.h
+++ b/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.h
@@ -52,6 +52,8 @@ Revision History
// This is the generated <AltResp> for defaults defined in VFR
//
extern UINT8 VfrMyIfrNVDataDefault0000[];
+extern UINT8 VfrMyIfrNVDataDefault0001[];
+extern UINT8 VfrMyIfrNVDataBlockName[];
//
// This is the generated IFR binary data for each formset defined in VFR.
@@ -68,7 +70,11 @@ extern UINT8 InventoryBin[];
//
extern UINT8 DriverSampleStrings[];
-#define SAMPLE_STRING L"This is an error!"
+#define VAR_OFFSET(Field) \
+ ((UINT16) ((UINTN) &(((DRIVER_SAMPLE_CONFIGURATION *) 0)->Field)))
+
+#define DYNAMIC_ONE_OF_VAR_OFFSET VAR_OFFSET (DynamicOneof)
+#define DYNAMIC_ORDERED_LIST_VAR_OFFSET VAR_OFFSET (DynamicOrderedList)
#define DRIVER_SAMPLE_PRIVATE_SIGNATURE EFI_SIGNATURE_32 ('D', 'S', 'p', 's')
diff --git a/MdeModulePkg/Universal/DriverSampleDxe/NVDataStruc.h b/MdeModulePkg/Universal/DriverSampleDxe/NVDataStruc.h
index 1c93d33df9..171d3baf08 100644
--- a/MdeModulePkg/Universal/DriverSampleDxe/NVDataStruc.h
+++ b/MdeModulePkg/Universal/DriverSampleDxe/NVDataStruc.h
@@ -35,7 +35,7 @@ Revision History:
0xb3f56470, 0x6141, 0x4621, 0x8f, 0x19, 0x70, 0x4e, 0x57, 0x7a, 0xa9, 0xe8 \
}
-#define VAR_EQ_TEST_NAME 0x100
+#define CONFIGURATION_VARSTORE_ID 0x1234
#pragma pack(1)
typedef struct {
@@ -57,7 +57,9 @@ typedef struct {
UINT8 OrderedList[8];
UINT8 BootOrder[8];
UINT8 BootOrderLarge;
- UINT8 DynamicCheck;
+ UINT8 DynamicRefresh;
+ UINT8 DynamicOneof;
+ UINT8 DynamicOrderedList[5];
} DRIVER_SAMPLE_CONFIGURATION;
//
diff --git a/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr b/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr
index b248e7334d..01c76345b4 100644
--- a/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr
+++ b/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr
@@ -67,23 +67,11 @@ formset
// VfrCompile -l --no-pre-processing --output-directory ${d_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii
//
- //
- // Define a Default Storage for Manufacturing Defauls. Attribut = 1 (EFI_HII_DEFAULT_CLASS_MANUFACTURING).
- // Only if this Default Storage is defined, CHECKBOX_DEFAULT_MFG can be used for CheckBox.
- //
- defaultstore MfgDefault, prompt = STRING_TOKEN (STR_DEFAULTSTORE_MFG), attribute = 1;
-
- //
- // Define a Safe Deafult Storage. Attribute = 2 (EFI_HII_DEFAULT_CLASS_SAFE) as an example.
- // It is not referenced.
- //
- defaultstore SafeDefault, prompt = STRING_TOKEN (STR_DEFAULTSTORE_SAFE), attribute = 2;
-
- //
+ //
// Define a Buffer Storage (EFI_IFR_VARSTORE)
//
varstore DRIVER_SAMPLE_CONFIGURATION, // This is the data structure type
- varid = 0x1234, // Optional VarStore ID
+ varid = CONFIGURATION_VARSTORE_ID, // Optional VarStore ID
name = MyIfrNVData, // Define referenced name in vfr
guid = FORMSET_GUID; // GUID of this buffer storage
@@ -103,6 +91,14 @@ formset
varsize = 1, // Size of the EFI variable
guid = FORMSET_GUID; // EFI variable GUID
+ defaultstore MyStandardDefault,
+ prompt = STRING_TOKEN(STR_STANDARD_DEFAULT_PROMPT),
+ attribute = 0x0000; // Default ID: 0000 standard default
+
+ defaultstore MyManufactureDefault,
+ prompt = STRING_TOKEN(STR_MANUFACTURE_DEFAULT_PROMPT),
+ attribute = 0x0001; // Default ID: 0001 manufacture default
+
//
// Define a Form (EFI_IFR_FORM)
//
@@ -121,11 +117,14 @@ formset
text = STRING_TOKEN(STR_CPU_STRING), // Prompt string
text = STRING_TOKEN(STR_CPU_STRING2); // TextTwo
+ //
+ // Define action button (EFI_IFR_ACTION)
+ //
text
help = STRING_TOKEN(STR_EXIT_TEXT),
text = STRING_TOKEN(STR_EXIT_TEXT),
text = STRING_TOKEN(STR_EXIT_TEXT),
- flags = INTERACTIVE,
+ flags = INTERACTIVE, // VfrCompiler will generate opcode EFI_IFR_ACTION for Text marked as INTERACTIVE
key = 0x1237;
text
@@ -138,9 +137,10 @@ formset
//
// Define oneof (EFI_IFR_ONE_OF)
//
- oneof varid = MyIfrNVData.SuppressGrayOutSomething, // Use "DataStructure.Member" to reference Buffer Storage
- prompt = STRING_TOKEN(STR_ONE_OF_PROMPT),
- help = STRING_TOKEN(STR_ONE_OF_HELP),
+ oneof name = MyOneOf, // Define reference name for Question
+ varid = MyIfrNVData.SuppressGrayOutSomething, // Use "DataStructure.Member" to reference Buffer Storage
+ prompt = STRING_TOKEN(STR_ONE_OF_PROMPT),
+ help = STRING_TOKEN(STR_ONE_OF_HELP),
//
// Define an option (EFI_IFR_ONE_OF_OPTION)
//
@@ -160,7 +160,7 @@ formset
endoneof;
grayoutif ideqval MyIfrNVData.SuppressGrayOutSomething == 0x1;
- suppressif ideqval MyIfrNVData.SuppressGrayOutSomething == 0x0;
+ suppressif questionref(MyOneOf) == 0x0;
checkbox varid = MyIfrNVData.ChooseToActivateNuclearWeaponry,
prompt = STRING_TOKEN(STR_CHECK_BOX_PROMPT),
@@ -199,7 +199,7 @@ formset
option text = STRING_TOKEN(STR_BOOT_OPTION1), value = 1, flags = RESET_REQUIRED;
option text = STRING_TOKEN(STR_BOOT_OPTION3), value = 3, flags = RESET_REQUIRED;
suppressif ideqval MyIfrNVData.BootOrderLarge == 0;
- option text = STRING_TOKEN(STR_BOOT_OPTION4), value = 4, flags = 0;
+ option text = STRING_TOKEN(STR_BOOT_OPTION4), value = 4, flags = RESET_REQUIRED;
endif
endlist;
@@ -290,7 +290,8 @@ formset
maximum = 0xf0,
step = 0, // Stepping of 0 equates to a manual entering
// of a value, otherwise it will be adjusted by "+"/"-"
- default = 20,
+ default = 21, // defaultstore could be used to specify the default type
+ // If no defaultstore is specified, it implies Standard Default
endnumeric;
@@ -300,7 +301,7 @@ formset
minimum = 0,
maximum = 0xf0,
step = 0,
- default = 20,
+ default = 21,
inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),
ideqval MyIfrNVData.HowOldAreYouInYearsManual == 99
@@ -322,16 +323,6 @@ formset
endnumeric;
- numeric varid = MyIfrNVData2.Field8, // Reference of MyIfrNVData2 storage
- prompt = STRING_TOKEN(STR_MYIFRNVDATA2_HEX_PROMPT),
- help = STRING_TOKEN(STR_MYIFRNVDATA2_HEX_HELP),
- flags = DISPLAY_UINT_HEX, // Display in HEX format (if not specified, default is in decimal format)
- minimum = 0,
- maximum = 250,
- default = 175,
-
- endnumeric;
-
label LABEL_1_VALUE;
label LABEL_2_VALUE;
@@ -342,10 +333,23 @@ formset
minimum = 0,
maximum = 243,
step = 1,
- default = 18,
-
+ default = 18, defaultstore = MyStandardDefault, // This is standard default value
+ default = 19, defaultstore = MyManufactureDefault, // This is manufacture default value
+
endnumeric;
endif;
+
+ resetbutton
+ defaultstore = MyStandardDefault,
+ prompt = STRING_TOKEN(STR_STANDARD_DEFAULT_PROMPT),
+ help = STRING_TOKEN(STR_STANDARD_DEFAULT_HELP),
+ endresetbutton;
+
+ resetbutton
+ defaultstore = MyManufactureDefault,
+ prompt = STRING_TOKEN(STR_MANUFACTURE_DEFAULT_PROMPT),
+ help = STRING_TOKEN(STR_MANUFACTURE_DEFAULT_HELP),
+ endresetbutton;
//
// Non-interactive password, validate by Setup Browser
@@ -354,7 +358,7 @@ formset
prompt = STRING_TOKEN(STR_PASSWORD_PROMPT),
help = STRING_TOKEN(STR_PASSWORD_HELP),
minsize = 6,
- maxsize = 20, // new opcode
+ maxsize = 20,
endpassword;
string varid = MyIfrNVData.PasswordClearText,
@@ -373,7 +377,7 @@ formset
flags = INTERACTIVE,
key = 0x2000,
minsize = 6,
- maxsize = 20, // new opcode
+ maxsize = 20,
endpassword;
goto 2,
@@ -493,12 +497,31 @@ formset
form formid = 3, title = STRING_TOKEN(STR_FORM3_TITLE); // note formid is a variable (for readability) (UINT16) - also added Form to the line to signify the Op-Code
- grayoutif ideqval MyIfrNVData.SuppressGrayOutSomething == 0x1;
+ suppressif ideqval MyEfiVar == 111;
text
help = STRING_TOKEN(STR_TEXT_HELP),
text = STRING_TOKEN(STR_TEXT_TEXT_1);
endif;
+ goto 1,
+ prompt = STRING_TOKEN(STR_GOTO_FORM1), //MainSetupPage
+ help = STRING_TOKEN(STR_GOTO_HELP);
+
+ numeric varid = MyIfrNVData.DynamicRefresh,
+ prompt = STRING_TOKEN(STR_NUMERIC_MANUAL_PROMPT),
+ help = STRING_TOKEN(STR_NUMERIC_HELP0),
+ flags = INTERACTIVE,
+ key = 0x5678,
+ minimum = 0,
+ maximum = 0xff,
+ step = 0,
+ default = 0,
+ refresh interval = 3 // Refresh interval in seconds
+ endnumeric;
+
+ label 0x2234;
+ label LABEL_END;
+
endform;
form formid = 4, title = STRING_TOKEN(STR_FORM3_TITLE);
diff --git a/MdeModulePkg/Universal/DriverSampleDxe/VfrStrings.uni b/MdeModulePkg/Universal/DriverSampleDxe/VfrStrings.uni
index d18ceb14fd..c687bf7d84 100644
--- a/MdeModulePkg/Universal/DriverSampleDxe/VfrStrings.uni
+++ b/MdeModulePkg/Universal/DriverSampleDxe/VfrStrings.uni
Binary files differ