#include "Bds.h"\r
#include "FrontPage.h"\r
\r
+EFI_DEVICE_PATH_PROTOCOL EndDevicePath[] = {\r
+ END_DEVICE_PATH_TYPE,\r
+ END_ENTIRE_DEVICE_PATH_SUBTYPE,\r
+ END_DEVICE_PATH_LENGTH,\r
+ 0\r
+};\r
+\r
+\r
EFI_GUID EfiLegacyDevOrderGuid = EFI_LEGACY_DEV_ORDER_VARIABLE_GUID;\r
EFI_GUID mBootMaintGuid = BOOT_MAINT_FORMSET_GUID;\r
EFI_GUID mFileExplorerGuid = FILE_EXPLORE_FORMSET_GUID;\r
Create string tokens for a menu from its help strings and display strings\r
\r
\r
- @param CallbackData EDES_TODO: Add parameter description\r
- @param HiiHandle - Hii Handle of the package to be updated.\r
- @param MenuOption - The Menu whose string tokens need to be created\r
+ @param CallbackData The BMM context data.\r
+ @param HiiHandle Hii Handle of the package to be updated.\r
+ @param MenuOption The Menu whose string tokens need to be created\r
\r
@retval EFI_SUCCESS string tokens created successfully\r
@retval others contain some errors\r
}\r
\r
/**\r
- EDES_TODO: Add function description.\r
+ Discard all changes done to the BMM pages such as Boot Order change,\r
+ Driver order change.\r
\r
- @param Private EDES_TODO: Add parameter description\r
- @param CurrentFakeNVMap EDES_TODO: Add parameter description\r
+ @param Private The BMM context data.\r
+ @param CurrentFakeNVMap The current Fack NV Map.\r
\r
- @return EDES_TODO: Add description for return value\r
+ @return VOID\r
\r
**/\r
VOID\r
//\r
// Create CallbackData structures for Driver Callback\r
//\r
- BmmCallbackInfo = EfiAllocateZeroPool (sizeof (BMM_CALLBACK_DATA));\r
+ BmmCallbackInfo = AllocateZeroPool (sizeof (BMM_CALLBACK_DATA));\r
if (BmmCallbackInfo == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
//\r
// Create LoadOption in BmmCallbackInfo for Driver Callback\r
//\r
- Ptr = EfiAllocateZeroPool (sizeof (BM_LOAD_CONTEXT) + sizeof (BM_FILE_CONTEXT) + sizeof (BM_HANDLE_CONTEXT) + sizeof (BM_MENU_ENTRY));\r
+ Ptr = AllocateZeroPool (sizeof (BM_LOAD_CONTEXT) + sizeof (BM_FILE_CONTEXT) + sizeof (BM_HANDLE_CONTEXT) + sizeof (BM_MENU_ENTRY));\r
if (Ptr == NULL) {\r
SafeFreePool (BmmCallbackInfo);\r
return EFI_OUT_OF_RESOURCES;\r
// Allocate space for creation of Buffer\r
//\r
gUpdateData.BufferSize = UPDATE_DATA_SIZE;\r
- gUpdateData.Data = EfiAllocateZeroPool (UPDATE_DATA_SIZE);\r
+ gUpdateData.Data = AllocateZeroPool (UPDATE_DATA_SIZE);\r
if (gUpdateData.Data == NULL) {\r
SafeFreePool (BmmCallbackInfo->LoadContext);\r
SafeFreePool (BmmCallbackInfo);\r
}\r
\r
/**\r
- EDES_TODO: Add function description.\r
+ Initialized all Menu Option List.\r
\r
- @param CallbackData EDES_TODO: Add parameter description\r
+ @param CallbackData The BMM context data.\r
\r
- @return EDES_TODO: Add description for return value\r
+ @return VOID\r
\r
**/\r
VOID\r
}\r
\r
/**\r
- EDES_TODO: Add function description.\r
+ Free up all Menu Option list.\r
\r
- @param VOID EDES_TODO: Add parameter description\r
+ @param VOID\r
\r
- @return EDES_TODO: Add description for return value\r
+ @return VOID\r
\r
**/\r
VOID\r
Intialize all the string depositories.\r
\r
\r
- @param VOID EDES_TODO: Add parameter description\r
+ @param VOID\r
\r
- EDES_TODO: Description incomplete None.\r
+ @return VOID\r
\r
**/\r
VOID\r
)\r
{\r
STRING_DEPOSITORY *StringDepository;\r
- StringDepository = EfiAllocateZeroPool (sizeof (STRING_DEPOSITORY) * STRING_DEPOSITORY_NUMBER);\r
+ StringDepository = AllocateZeroPool (sizeof (STRING_DEPOSITORY) * STRING_DEPOSITORY_NUMBER);\r
FileOptionStrDepository = StringDepository++;\r
ConsoleOptionStrDepository = StringDepository++;\r
BootOptionStrDepository = StringDepository++;\r
//\r
// If there is no usable node in the list, update the list.\r
//\r
- NextListNode = EfiAllocateZeroPool (sizeof (STRING_LIST_NODE));\r
+ NextListNode = AllocateZeroPool (sizeof (STRING_LIST_NODE));\r
\r
HiiLibNewString (CallbackData->BmmHiiHandle, &(NextListNode->StringToken), L" ");\r
ASSERT (NextListNode->StringToken != 0);\r
Reclaim string depositories by moving the current node pointer to list head..\r
\r
\r
- @param VOID EDES_TODO: Add parameter description\r
+ @param VOID \r
\r
- EDES_TODO: Description incomplete None.\r
+ @return VOID\r
\r
**/\r
VOID\r
Release resource for all the string depositories.\r
\r
\r
- @param VOID EDES_TODO: Add parameter description\r
+ @param VOID\r
\r
- EDES_TODO: Description incomplete None.\r
+ @return VOID\r
\r
**/\r
VOID\r
Start boot maintenance manager\r
\r
\r
- @param VOID EDES_TODO: Add parameter description\r
+ @param VOID\r
\r
- @return EDES_TODO: Add description for return value\r
+ @retval EFI_SUCCESS If BMM is invoked successfully.\r
+ @return Other value if BMM return unsuccessfully.\r
\r
**/\r
EFI_STATUS\r
Dispatch BMM formset and FileExplorer formset.\r
\r
\r
- @param CallbackData EDES_TODO: Add parameter description\r
+ @param CallbackData The BMM context data.\r
\r
- @return EDES_TODO: Add description for return value\r
+ @retval EFI_SUCCESS If function complete successfully.\r
+ @retturn Other value if the Setup Browser process BMM's pages and\r
+ return unsuccessfully.\r
\r
**/\r
EFI_STATUS\r
return Status;\r
}\r
\r
+\r
+/**\r
+ Deletete the Boot Option from EFI Variable. The Boot Order Arrray\r
+ is also updated.\r
+\r
+ @param OptionNumber EDES_TODO: Add parameter description\r
+ @param BootOrder The Boot Order array.\r
+ @param BootOrderSize The size of the Boot Order Array.\r
+\r
+ @return Other value if the Boot Option specified by OptionNumber is not deleteed succesfully.\r
+ @retval EFI_SUCCESS If function return successfully.\r
+\r
+**/\r
+EFI_STATUS\r
+BdsDeleteBootOption (\r
+ IN UINTN OptionNumber,\r
+ IN OUT UINT16 *BootOrder,\r
+ IN OUT UINTN *BootOrderSize\r
+ )\r
+{\r
+ UINT16 BootOption[100];\r
+ UINTN Index;\r
+ EFI_STATUS Status;\r
+ UINTN Index2Del;\r
+\r
+ Status = EFI_SUCCESS;\r
+ Index2Del = 0;\r
+\r
+ UnicodeSPrint (BootOption, sizeof (BootOption), L"Boot%04x", OptionNumber);\r
+ Status = EfiLibDeleteVariable (BootOption, &gEfiGlobalVariableGuid);\r
+ //\r
+ // adjust boot order array\r
+ //\r
+ for (Index = 0; Index < *BootOrderSize / sizeof (UINT16); Index++) {\r
+ if (BootOrder[Index] == OptionNumber) {\r
+ Index2Del = Index;\r
+ break;\r
+ }\r
+ }\r
+\r
+ if (Index != *BootOrderSize / sizeof (UINT16)) {\r
+ for (Index = 0; Index < *BootOrderSize / sizeof (UINT16) - 1; Index++) {\r
+ if (Index >= Index2Del) {\r
+ BootOrder[Index] = BootOrder[Index + 1];\r
+ }\r
+ }\r
+\r
+ *BootOrderSize -= sizeof (UINT16);\r
+ }\r
+\r
+ return Status;\r
+\r
+}\r
+\r
+\r