/** @file\r
Dynamically update the pages.\r
\r
-Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
//\r
mStartOpCodeHandle = HiiAllocateOpCodeHandle ();\r
ASSERT (mStartOpCodeHandle != NULL);\r
- \r
+\r
mEndOpCodeHandle = HiiAllocateOpCodeHandle ();\r
ASSERT (mEndOpCodeHandle != NULL);\r
- \r
+\r
//\r
// Create Hii Extend Label OpCode as the start opcode\r
//\r
mStartLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (mStartOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));\r
mStartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;\r
- \r
+\r
//\r
// Create Hii Extend Label OpCode as the end opcode\r
//\r
{\r
//\r
// Free current updated date\r
- // \r
+ //\r
if (mStartOpCodeHandle != NULL) {\r
HiiFreeOpCodeHandle (mStartOpCodeHandle);\r
}\r
/**\r
Add a "Go back to main page" tag in front of the form when there are no\r
"Apply changes" and "Discard changes" tags in the end of the form.\r
- \r
+\r
@param CallbackData The BMM context data.\r
\r
**/\r
}\r
\r
/**\r
- Clean up the dynamic opcode at label and form specified by both LabelId. \r
+ Clean up the dynamic opcode at label and form specified by both LabelId.\r
\r
@param LabelId It is both the Form ID and Label ID for opcode deletion.\r
@param CallbackData The BMM context data.\r
// through HiiSetBrowserData function.\r
//\r
CallbackData->BmmFakeNvData.BootOptionDel[Index] = FALSE;\r
+ CallbackData->BmmOldFakeNVData.BootOptionDel[Index] = FALSE;\r
}\r
- \r
+\r
HiiCreateCheckBoxOpCode (\r
mStartOpCodeHandle,\r
(EFI_QUESTION_ID) (BOOT_OPTION_DEL_QUESTION_ID + Index),\r
// through HiiSetBrowserData function.\r
//\r
CallbackData->BmmFakeNvData.DriverOptionDel[Index] = FALSE;\r
+ CallbackData->BmmOldFakeNVData.DriverOptionDel[Index] = FALSE;\r
}\r
HiiCreateCheckBoxOpCode (\r
mStartOpCodeHandle,\r
}\r
\r
/**\r
- Prepare the page to allow user to add description for \r
+ Prepare the page to allow user to add description for\r
a Driver Option.\r
\r
@param CallbackData The BMM context data.\r
UINT16 Index2;\r
UINT8 CheckFlags;\r
UINT8 *ConsoleCheck;\r
- UINT8 *OldConsoleCheck;\r
- UINTN ConsoleCheckSize;\r
EFI_QUESTION_ID QuestionIdBase;\r
UINT16 VariableOffsetBase;\r
\r
UpdatePageStart (CallbackData);\r
\r
ConsoleCheck = NULL;\r
- OldConsoleCheck = NULL;\r
QuestionIdBase = 0;\r
VariableOffsetBase = 0;\r
- ConsoleCheckSize = 0;\r
\r
switch (UpdatePageId) {\r
case FORM_CON_IN_ID:\r
ConsoleCheck = &CallbackData->BmmFakeNvData.ConsoleInCheck[0];\r
- OldConsoleCheck = &CallbackData->BmmOldFakeNVData.ConsoleInCheck[0];\r
- ConsoleCheckSize = sizeof (CallbackData->BmmFakeNvData.ConsoleInCheck);\r
QuestionIdBase = CON_IN_DEVICE_QUESTION_ID;\r
VariableOffsetBase = CON_IN_DEVICE_VAR_OFFSET;\r
break;\r
\r
case FORM_CON_OUT_ID:\r
ConsoleCheck = &CallbackData->BmmFakeNvData.ConsoleOutCheck[0];\r
- OldConsoleCheck = &CallbackData->BmmOldFakeNVData.ConsoleOutCheck[0];\r
- ConsoleCheckSize = sizeof (CallbackData->BmmFakeNvData.ConsoleOutCheck);\r
QuestionIdBase = CON_OUT_DEVICE_QUESTION_ID;\r
VariableOffsetBase = CON_OUT_DEVICE_VAR_OFFSET;\r
break;\r
\r
case FORM_CON_ERR_ID:\r
ConsoleCheck = &CallbackData->BmmFakeNvData.ConsoleErrCheck[0];\r
- OldConsoleCheck = &CallbackData->BmmOldFakeNVData.ConsoleErrCheck[0];\r
- ConsoleCheckSize = sizeof (CallbackData->BmmFakeNvData.ConsoleErrCheck);\r
QuestionIdBase = CON_ERR_DEVICE_QUESTION_ID;\r
VariableOffsetBase = CON_ERR_DEVICE_VAR_OFFSET;\r
break;\r
(UINT16) (VariableOffsetBase + Index),\r
NewMenuEntry->DisplayStringToken,\r
NewMenuEntry->HelpStringToken,\r
- 0,\r
+ EFI_IFR_FLAG_CALLBACK,\r
CheckFlags,\r
NULL\r
);\r
(UINT16) (VariableOffsetBase + Index),\r
NewMenuEntry->DisplayStringToken,\r
NewMenuEntry->HelpStringToken,\r
- 0,\r
+ EFI_IFR_FLAG_CALLBACK,\r
CheckFlags,\r
NULL\r
);\r
Index++;\r
}\r
\r
- CopyMem (OldConsoleCheck, ConsoleCheck, ConsoleCheckSize);\r
-\r
UpdatePageEnd (CallbackData);\r
}\r
\r
UINT16 Index;\r
UINT16 OptionIndex;\r
VOID *OptionsOpCodeHandle;\r
- BM_LOAD_CONTEXT *NewLoadContext;\r
BOOLEAN BootOptionFound;\r
UINT32 *OptionOrder;\r
EFI_QUESTION_ID QuestionId;\r
OptionOrder = NULL;\r
QuestionId = 0;\r
VarOffset = 0;\r
- switch (UpdatePageId) { \r
- \r
+ switch (UpdatePageId) {\r
+\r
case FORM_BOOT_CHG_ID:\r
- GetBootOrder (CallbackData);\r
+ //\r
+ // If the BootOptionOrder in the BmmFakeNvData are same with the date in the BmmOldFakeNVData,\r
+ // means all Boot Options has been save in BootOptionMenu, we can get the date from the menu.\r
+ // else means browser maintains some uncommitted date which are not saved in BootOptionMenu,\r
+ // so we should not get the data from BootOptionMenu to show it.\r
+ //\r
+ if (CompareMem (CallbackData->BmmFakeNvData.BootOptionOrder, CallbackData->BmmOldFakeNVData.BootOptionOrder, sizeof (CallbackData->BmmFakeNvData.BootOptionOrder)) == 0) {\r
+ GetBootOrder (CallbackData);\r
+ }\r
OptionOrder = CallbackData->BmmFakeNvData.BootOptionOrder;\r
QuestionId = BOOT_OPTION_ORDER_QUESTION_ID;\r
VarOffset = BOOT_OPTION_ORDER_VAR_OFFSET;\r
break;\r
- \r
+\r
case FORM_DRV_CHG_ID:\r
- GetDriverOrder (CallbackData);\r
+ //\r
+ // If the DriverOptionOrder in the BmmFakeNvData are same with the date in the BmmOldFakeNVData,\r
+ // means all Driver Options has been save in DriverOptionMenu, we can get the DriverOptionOrder from the menu.\r
+ // else means browser maintains some uncommitted date which are not saved in DriverOptionMenu,\r
+ // so we should not get the data from DriverOptionMenu to show it.\r
+ //\r
+ if (CompareMem (CallbackData->BmmFakeNvData.DriverOptionOrder, CallbackData->BmmOldFakeNVData.DriverOptionOrder, sizeof (CallbackData->BmmFakeNvData.DriverOptionOrder)) == 0) {\r
+ GetDriverOrder (CallbackData);\r
+ }\r
OptionOrder = CallbackData->BmmFakeNvData.DriverOptionOrder;\r
QuestionId = DRIVER_OPTION_ORDER_QUESTION_ID;\r
VarOffset = DRIVER_OPTION_ORDER_VAR_OFFSET;\r
break;\r
- } \r
- ASSERT (OptionOrder != NULL); \r
- \r
+ }\r
+ ASSERT (OptionOrder != NULL);\r
+\r
OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
ASSERT (OptionsOpCodeHandle != NULL);\r
- \r
+\r
NewMenuEntry = NULL;\r
for (OptionIndex = 0; (OptionOrder[OptionIndex] != 0 && OptionIndex < MAX_MENU_NUMBER); OptionIndex++) {\r
BootOptionFound = FALSE;\r
for (Index = 0; Index < OptionMenu->MenuNumber; Index++) {\r
NewMenuEntry = BOpt_GetMenuEntry (OptionMenu, Index);\r
- NewLoadContext = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext;\r
if ((UINT32) (NewMenuEntry->OptionNumber + 1) == OptionOrder[OptionIndex]) {\r
BootOptionFound = TRUE;\r
break;\r
);\r
}\r
}\r
- \r
+\r
if (OptionMenu->MenuNumber > 0) {\r
- HiiCreateOrderedListOpCode ( \r
- mStartOpCodeHandle, // Container for dynamic created opcodes \r
- QuestionId, // Question ID \r
- VARSTORE_ID_BOOT_MAINT, // VarStore ID \r
- VarOffset, // Offset in Buffer Storage \r
- STRING_TOKEN (STR_CHANGE_ORDER), // Question prompt text \r
- STRING_TOKEN (STR_CHANGE_ORDER), // Question help text \r
- 0, // Question flag \r
+ HiiCreateOrderedListOpCode (\r
+ mStartOpCodeHandle, // Container for dynamic created opcodes\r
+ QuestionId, // Question ID\r
+ VARSTORE_ID_BOOT_MAINT, // VarStore ID\r
+ VarOffset, // Offset in Buffer Storage\r
+ STRING_TOKEN (STR_CHANGE_ORDER), // Question prompt text\r
+ STRING_TOKEN (STR_CHANGE_ORDER), // Question help text\r
+ 0, // Question flag\r
0, // Ordered list flag, e.g. EFI_IFR_UNIQUE_SET\r
- EFI_IFR_TYPE_NUM_SIZE_32, // Data type of Question value \r
- 100, // Maximum container \r
- OptionsOpCodeHandle, // Option Opcode list \r
- NULL // Default Opcode is NULL \r
+ EFI_IFR_TYPE_NUM_SIZE_32, // Data type of Question value\r
+ 100, // Maximum container\r
+ OptionsOpCodeHandle, // Option Opcode list\r
+ NULL // Default Opcode is NULL\r
);\r
}\r
\r
\r
}\r
\r
-/**\r
- Create the dynamic page to allow user to set\r
- the "BootNext" value.\r
-\r
- @param CallbackData The BMM context data.\r
-\r
-**/\r
-VOID\r
-UpdateBootNextPage (\r
- IN BMM_CALLBACK_DATA *CallbackData\r
- )\r
-{\r
- BM_MENU_ENTRY *NewMenuEntry;\r
- BM_LOAD_CONTEXT *NewLoadContext;\r
- UINTN NumberOfOptions;\r
- UINT16 Index;\r
- VOID *OptionsOpCodeHandle;\r
-\r
- NumberOfOptions = BootOptionMenu.MenuNumber;\r
- CallbackData->BmmAskSaveOrNot = TRUE;\r
-\r
- UpdatePageStart (CallbackData);\r
-\r
- if (NumberOfOptions > 0) {\r
- OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
- ASSERT (OptionsOpCodeHandle != NULL);\r
-\r
- CallbackData->BmmFakeNvData.BootNext = NONE_BOOTNEXT_VALUE;\r
-\r
- for (Index = 0; Index < BootOptionMenu.MenuNumber; Index++) {\r
- NewMenuEntry = BOpt_GetMenuEntry (&BootOptionMenu, Index);\r
- NewLoadContext = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext;\r
-\r
- if (NewLoadContext->IsBootNext) {\r
- HiiCreateOneOfOptionOpCode (\r
- OptionsOpCodeHandle,\r
- NewMenuEntry->DisplayStringToken,\r
- EFI_IFR_OPTION_DEFAULT,\r
- EFI_IFR_TYPE_NUM_SIZE_32,\r
- Index\r
- );\r
- CallbackData->BmmFakeNvData.BootNext = Index;\r
- } else {\r
- HiiCreateOneOfOptionOpCode (\r
- OptionsOpCodeHandle,\r
- NewMenuEntry->DisplayStringToken,\r
- 0,\r
- EFI_IFR_TYPE_NUM_SIZE_32,\r
- Index\r
- );\r
- }\r
- }\r
-\r
- if (CallbackData->BmmFakeNvData.BootNext == NONE_BOOTNEXT_VALUE) {\r
- HiiCreateOneOfOptionOpCode (\r
- OptionsOpCodeHandle,\r
- STRING_TOKEN (STR_NONE),\r
- EFI_IFR_OPTION_DEFAULT,\r
- EFI_IFR_TYPE_NUM_SIZE_32,\r
- NONE_BOOTNEXT_VALUE\r
- );\r
- } else {\r
- HiiCreateOneOfOptionOpCode (\r
- OptionsOpCodeHandle,\r
- STRING_TOKEN (STR_NONE),\r
- 0,\r
- EFI_IFR_TYPE_NUM_SIZE_32,\r
- NONE_BOOTNEXT_VALUE\r
- );\r
- } \r
-\r
- HiiCreateOneOfOpCode (\r
- mStartOpCodeHandle,\r
- (EFI_QUESTION_ID) BOOT_NEXT_QUESTION_ID,\r
- VARSTORE_ID_BOOT_MAINT,\r
- BOOT_NEXT_VAR_OFFSET,\r
- STRING_TOKEN (STR_BOOT_NEXT),\r
- STRING_TOKEN (STR_BOOT_NEXT_HELP),\r
- 0,\r
- EFI_IFR_NUMERIC_SIZE_4,\r
- OptionsOpCodeHandle,\r
- NULL\r
- );\r
-\r
- HiiFreeOpCodeHandle (OptionsOpCodeHandle);\r
- }\r
-\r
- UpdatePageEnd (CallbackData);\r
-}\r
-\r
-/**\r
- Create the dynamic page to allow user to set the "TimeOut" value.\r
-\r
- @param CallbackData The BMM context data.\r
-\r
-**/\r
-VOID\r
-UpdateTimeOutPage (\r
- IN BMM_CALLBACK_DATA *CallbackData\r
- )\r
-{\r
- VOID *DefaultOpCodeHandle;\r
-\r
- CallbackData->BmmAskSaveOrNot = TRUE;\r
-\r
- UpdatePageStart (CallbackData);\r
-\r
- DefaultOpCodeHandle = HiiAllocateOpCodeHandle ();\r
- ASSERT (DefaultOpCodeHandle != NULL);\r
- HiiCreateDefaultOpCode (DefaultOpCodeHandle, EFI_HII_DEFAULT_CLASS_STANDARD, EFI_IFR_TYPE_NUM_SIZE_16, CallbackData->BmmFakeNvData.BootTimeOut);\r
-\r
- HiiCreateNumericOpCode (\r
- mStartOpCodeHandle,\r
- (EFI_QUESTION_ID) BOOT_TIME_OUT_QUESTION_ID,\r
- VARSTORE_ID_BOOT_MAINT,\r
- BOOT_TIME_OUT_VAR_OFFSET,\r
- STRING_TOKEN (STR_NUM_AUTO_BOOT),\r
- STRING_TOKEN (STR_HLP_AUTO_BOOT),\r
- 0,\r
- EFI_IFR_NUMERIC_SIZE_2 | EFI_IFR_DISPLAY_UINT_DEC,\r
- 0,\r
- 65535,\r
- 0,\r
- DefaultOpCodeHandle\r
- );\r
- \r
- HiiFreeOpCodeHandle (DefaultOpCodeHandle);\r
-\r
- UpdatePageEnd (CallbackData);\r
-}\r
-\r
-\r
/**\r
Refresh the text mode page.\r
\r
if (EFI_ERROR (Status)) {\r
continue;\r
}\r
- \r
+\r
//\r
// Build mode string Column x Row\r
//\r
- UnicodeValueToString (ModeString, 0, Col, 0);\r
+ UnicodeValueToStringS (ModeString, sizeof (ModeString), 0, Col, 0);\r
PStr = &ModeString[0];\r
- StrnCatS (PStr, sizeof (ModeString) / sizeof (ModeString[0]), L" x ", StrLen(L" x ") + 1);\r
+ StrnCatS (PStr, ARRAY_SIZE (ModeString), L" x ", StrLen(L" x ") + 1);\r
PStr = PStr + StrLen (PStr);\r
- UnicodeValueToString (PStr , 0, Row, 0);\r
+ UnicodeValueToStringS (\r
+ PStr,\r
+ sizeof (ModeString) - ((UINTN)PStr - (UINTN)&ModeString[0]),\r
+ 0,\r
+ Row,\r
+ 0\r
+ );\r
\r
ModeToken[Index] = HiiSetString (CallbackData->BmmHiiHandle, 0, ModeString, NULL);\r
\r
(UINT16) (COM_BAUD_RATE_VAR_OFFSET + CurrentTerminal),\r
STRING_TOKEN (STR_COM_BAUD_RATE),\r
STRING_TOKEN (STR_COM_BAUD_RATE),\r
- 0,\r
+ EFI_IFR_FLAG_CALLBACK,\r
EFI_IFR_NUMERIC_SIZE_1,\r
OptionsOpCodeHandle,\r
NULL\r
);\r
- \r
+\r
HiiFreeOpCodeHandle (OptionsOpCodeHandle);\r
OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
ASSERT (OptionsOpCodeHandle != NULL);\r
\r
- for (Index = 0; Index < sizeof (DataBitsList) / sizeof (DataBitsList[0]); Index++) {\r
+ for (Index = 0; Index < ARRAY_SIZE (DataBitsList); Index++) {\r
CheckFlags = 0;\r
\r
if (DataBitsList[Index].Value == 8) {\r
(UINT16) (COM_DATA_RATE_VAR_OFFSET + CurrentTerminal),\r
STRING_TOKEN (STR_COM_DATA_BITS),\r
STRING_TOKEN (STR_COM_DATA_BITS),\r
- 0,\r
+ EFI_IFR_FLAG_CALLBACK,\r
EFI_IFR_NUMERIC_SIZE_1,\r
OptionsOpCodeHandle,\r
NULL\r
OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
ASSERT (OptionsOpCodeHandle != NULL);\r
\r
- for (Index = 0; Index < sizeof (ParityList) / sizeof (ParityList[0]); Index++) {\r
+ for (Index = 0; Index < ARRAY_SIZE (ParityList); Index++) {\r
CheckFlags = 0;\r
if (ParityList[Index].Value == NoParity) {\r
CheckFlags |= EFI_IFR_OPTION_DEFAULT;\r
(UINT16) (COM_PARITY_VAR_OFFSET + CurrentTerminal),\r
STRING_TOKEN (STR_COM_PARITY),\r
STRING_TOKEN (STR_COM_PARITY),\r
- 0,\r
+ EFI_IFR_FLAG_CALLBACK,\r
EFI_IFR_NUMERIC_SIZE_1,\r
OptionsOpCodeHandle,\r
NULL\r
OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
ASSERT (OptionsOpCodeHandle != NULL);\r
\r
- for (Index = 0; Index < sizeof (StopBitsList) / sizeof (StopBitsList[0]); Index++) {\r
+ for (Index = 0; Index < ARRAY_SIZE (StopBitsList); Index++) {\r
CheckFlags = 0;\r
if (StopBitsList[Index].Value == OneStopBit) {\r
CheckFlags |= EFI_IFR_OPTION_DEFAULT;\r
(UINT16) (COM_STOP_BITS_VAR_OFFSET + CurrentTerminal),\r
STRING_TOKEN (STR_COM_STOP_BITS),\r
STRING_TOKEN (STR_COM_STOP_BITS),\r
- 0,\r
+ EFI_IFR_FLAG_CALLBACK,\r
EFI_IFR_NUMERIC_SIZE_1,\r
OptionsOpCodeHandle,\r
NULL\r
OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
ASSERT (OptionsOpCodeHandle != NULL);\r
\r
- for (Index = 0; Index < sizeof (TerminalType) / sizeof (TerminalType[0]); Index++) {\r
+ for (Index = 0; Index < ARRAY_SIZE (TerminalType); Index++) {\r
CheckFlags = 0;\r
if (Index == 0) {\r
CheckFlags |= EFI_IFR_OPTION_DEFAULT;\r
(UINT16) (COM_TERMINAL_VAR_OFFSET + CurrentTerminal),\r
STRING_TOKEN (STR_COM_TERMI_TYPE),\r
STRING_TOKEN (STR_COM_TERMI_TYPE),\r
- 0,\r
+ EFI_IFR_FLAG_CALLBACK,\r
EFI_IFR_NUMERIC_SIZE_1,\r
OptionsOpCodeHandle,\r
NULL\r
OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
ASSERT (OptionsOpCodeHandle != NULL);\r
\r
- for (Index = 0; Index < sizeof (mFlowControlType) / sizeof (mFlowControlType[0]); Index++) {\r
+ for (Index = 0; Index < ARRAY_SIZE (mFlowControlType); Index++) {\r
CheckFlags = 0;\r
if (Index == 0) {\r
CheckFlags |= EFI_IFR_OPTION_DEFAULT;\r
(UINT16) (COM_FLOWCONTROL_VAR_OFFSET + CurrentTerminal),\r
STRING_TOKEN (STR_COM_FLOW_CONTROL),\r
STRING_TOKEN (STR_COM_FLOW_CONTROL),\r
- 0,\r
+ EFI_IFR_FLAG_CALLBACK,\r
EFI_IFR_NUMERIC_SIZE_1,\r
OptionsOpCodeHandle,\r
NULL\r
\r
UpdatePageEnd (CallbackData);\r
}\r
- \r
+\r
/**\r
Update add boot/driver option page.\r
\r
CHAR16 *String;\r
EFI_STRING_ID StringToken;\r
\r
+ String = NULL;\r
+\r
if (DevicePath != NULL){\r
String = ExtractFileNameFromDevicePath(DevicePath);\r
- StringToken = HiiSetString (CallbackData->BmmHiiHandle, 0, String, NULL);\r
- FreePool(String);\r
- } else {\r
+ }\r
+ if (String == NULL) {\r
String = HiiGetString (CallbackData->BmmHiiHandle, STRING_TOKEN (STR_NULL_STRING), NULL);\r
ASSERT (String != NULL);\r
- StringToken = HiiSetString (CallbackData->BmmHiiHandle, 0, String, NULL);\r
- FreePool (String);\r
}\r
\r
+ StringToken = HiiSetString (CallbackData->BmmHiiHandle, 0, String, NULL);\r
+ FreePool (String);\r
+\r
if(FormId == FORM_BOOT_ADD_ID){\r
if (!CallbackData->BmmFakeNvData.BootOptionChanged) {\r
ZeroMem (CallbackData->BmmFakeNvData.BootOptionalData, sizeof (CallbackData->BmmFakeNvData.BootOptionalData));\r
ZeroMem (CallbackData->BmmFakeNvData.BootDescriptionData, sizeof (CallbackData->BmmFakeNvData.BootDescriptionData));\r
+ ZeroMem (CallbackData->BmmOldFakeNVData.BootOptionalData, sizeof (CallbackData->BmmOldFakeNVData.BootOptionalData));\r
+ ZeroMem (CallbackData->BmmOldFakeNVData.BootDescriptionData, sizeof (CallbackData->BmmOldFakeNVData.BootDescriptionData));\r
}\r
} else if (FormId == FORM_DRV_ADD_FILE_ID){\r
if (!CallbackData->BmmFakeNvData.DriverOptionChanged) {\r
ZeroMem (CallbackData->BmmFakeNvData.DriverOptionalData, sizeof (CallbackData->BmmFakeNvData.DriverOptionalData));\r
ZeroMem (CallbackData->BmmFakeNvData.DriverDescriptionData, sizeof (CallbackData->BmmFakeNvData.DriverDescriptionData));\r
+ ZeroMem (CallbackData->BmmOldFakeNVData.DriverOptionalData, sizeof (CallbackData->BmmOldFakeNVData.DriverOptionalData));\r
+ ZeroMem (CallbackData->BmmOldFakeNVData.DriverDescriptionData, sizeof (CallbackData->BmmOldFakeNVData.DriverDescriptionData));\r
}\r
}\r
\r