UINT16 BootTimeOut;\r
EDKII_VARIABLE_LOCK_PROTOCOL *VariableLock;\r
UINTN Index;\r
- EFI_BOOT_MANAGER_LOAD_OPTION BootOption;\r
+ EFI_BOOT_MANAGER_LOAD_OPTION LoadOption;\r
UINT16 *BootNext;\r
CHAR16 BootNextVariableName[sizeof ("Boot####")];\r
EFI_BOOT_MANAGER_LOAD_OPTION BootManagerMenu;\r
BOOLEAN BootFwUi;\r
+ EFI_DEVICE_PATH_PROTOCOL *FilePath;\r
\r
HotkeyTriggered = NULL;\r
Status = EFI_SUCCESS;\r
//\r
InitializeLanguage (TRUE);\r
\r
+ //\r
+ // System firmware must include a PlatformRecovery#### variable specifying\r
+ // a short-form File Path Media Device Path containing the platform default\r
+ // file path for removable media\r
+ //\r
+ FilePath = FileDevicePath (NULL, EFI_REMOVABLE_MEDIA_FILE_NAME);\r
+ Status = EfiBootManagerInitializeLoadOption (\r
+ &LoadOption,\r
+ 0,\r
+ LoadOptionTypePlatformRecovery,\r
+ LOAD_OPTION_ACTIVE,\r
+ L"Default PlatformRecovery",\r
+ FilePath,\r
+ NULL,\r
+ 0\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+ EfiBootManagerLoadOptionToVariable (&LoadOption);\r
+ EfiBootManagerFreeLoadOption (&LoadOption);\r
+ FreePool (FilePath);\r
+\r
//\r
// Report Status Code to indicate connecting drivers will happen\r
//\r
//\r
if (BootNext != NULL) {\r
UnicodeSPrint (BootNextVariableName, sizeof (BootNextVariableName), L"Boot%04x", *BootNext);\r
- Status = EfiBootManagerVariableToLoadOption (BootNextVariableName, &BootOption);\r
+ Status = EfiBootManagerVariableToLoadOption (BootNextVariableName, &LoadOption);\r
if (!EFI_ERROR (Status)) {\r
- EfiBootManagerBoot (&BootOption);\r
- EfiBootManagerFreeLoadOption (&BootOption);\r
- if (BootOption.Status == EFI_SUCCESS) {\r
+ EfiBootManagerBoot (&LoadOption);\r
+ EfiBootManagerFreeLoadOption (&LoadOption);\r
+ if (LoadOption.Status == EFI_SUCCESS) {\r
//\r
// Boot to Boot Manager Menu upon EFI_SUCCESS\r
//\r
- EfiBootManagerGetBootManagerMenu (&BootOption);\r
- EfiBootManagerBoot (&BootOption);\r
- EfiBootManagerFreeLoadOption (&BootOption);\r
+ EfiBootManagerGetBootManagerMenu (&LoadOption);\r
+ EfiBootManagerBoot (&LoadOption);\r
+ EfiBootManagerFreeLoadOption (&LoadOption);\r
}\r
}\r
}\r