From d635c33f80cb6830b773957eda0cb7d6325038d9 Mon Sep 17 00:00:00 2001 From: MarsDoge Date: Fri, 22 May 2026 20:22:23 +0800 Subject: [PATCH] ModernSetupApp: launch selected Boot option directly --- .../ModernSetupApp/ModernSetupAppActions.c | 41 ++++++++++++++----- CHANGELOG.md | 3 ++ Docs/IbvAndPlatformSetupSurvey.md | 4 +- Docs/IbvAndPlatformSetupSurvey.zh-CN.md | 4 +- Docs/ProductizationFeatureMatrix.md | 6 +-- Docs/ProductizationFeatureMatrix.zh-CN.md | 4 +- Library/ModernUiStringLib/ModernUiStringLib.c | 12 +++--- 7 files changed, 48 insertions(+), 26 deletions(-) diff --git a/Application/ModernSetupApp/ModernSetupAppActions.c b/Application/ModernSetupApp/ModernSetupAppActions.c index 8a1a84c..b079b46 100644 --- a/Application/ModernSetupApp/ModernSetupAppActions.c +++ b/Application/ModernSetupApp/ModernSetupAppActions.c @@ -376,26 +376,45 @@ ModernSetupGetPageSelectableCount ( } /** - Open the native Boot Manager for a visible Boot page row. + Launch the selected visible Boot#### option. - ModernSetupApp is the setup/front-page UI. It lists Boot#### summaries, but - hands Boot#### launch responsibility to edk2's native BootManagerMenuApp (or - UiApp on platforms where the native setup app remains the fallback). Selection - is accepted for the UI contract and is not dereferenced here. + The Boot page presents the same filtered Boot#### rows shown on screen. Enter + resolves the selected visible row back to its Boot#### option number, then + lets UefiBootManagerLib perform the actual boot attempt. The Exit page still + provides a separate native Boot Manager fallback for platforms where users + want edk2's original boot picker. - @param[in] Selection Zero-based visible Boot page row index. Ignored. + @param[in] Selection Zero-based visible Boot page row index. - @retval EFI_SUCCESS Native boot manager returned successfully. - @retval EFI_NOT_FOUND Native fallback app could not be resolved. - @retval others Status returned by the native fallback handoff. + @retval EFI_SUCCESS Boot option launched and returned successfully. + @retval EFI_NOT_FOUND Selection is out of range or the Boot#### option vanished. + @retval others Status recorded by UefiBootManagerLib. **/ EFI_STATUS ModernSetupLaunchSelectedBootOption ( IN UINTN Selection ) { - (VOID)Selection; - return ModernSetupLaunchUiAppFallback (mModernSetupImageHandle); + EFI_STATUS Status; + MODERN_UI_BOOT_OPTION *Options; + UINTN OptionCount; + UINT16 OptionNumber; + + Options = NULL; + Status = ModernUiBootDataGetOptions (mModernSetupImageHandle, &Options, &OptionCount); + if (EFI_ERROR (Status)) { + return Status; + } + + if ((Options == NULL) || (Selection >= OptionCount)) { + ModernUiBootDataFreeOptions (Options, OptionCount); + return EFI_NOT_FOUND; + } + + OptionNumber = Options[Selection].OptionNumber; + ModernUiBootDataFreeOptions (Options, OptionCount); + + return ModernUiBootDataBootOption (OptionNumber); } /** diff --git a/CHANGELOG.md b/CHANGELOG.md index c15aec3..a35c81a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -245,6 +245,9 @@ this file as both a release log and a lightweight development progress record. ### Fixed +- Changed ModernSetupApp Boot page Enter behavior to launch the selected + visible Boot#### entry through UefiBootManagerLib; native Boot Manager remains + available as the Exit-page fallback. - Fixed rectangle fill rendering by using GOP `EfiBltVideoFill` instead of passing a one-line buffer as a multi-line BLT source. - Fixed text rendering setup by providing the HII Font output dimensions and diff --git a/Docs/IbvAndPlatformSetupSurvey.md b/Docs/IbvAndPlatformSetupSurvey.md index aa23ac0..e97f043 100644 --- a/Docs/IbvAndPlatformSetupSurvey.md +++ b/Docs/IbvAndPlatformSetupSurvey.md @@ -46,7 +46,7 @@ firmware stack. | Surface | Display directly in App | App entry point only | Native FormBrowser owner | | --- | --- | --- | --- | | System / Dashboard | Firmware vendor/revision, architecture, form factor, boot mode, memory, display mode, Secure Boot, provider availability. | Detailed platform inventory. | Platform inventory HII or SMBIOS/ACPI-specific pages. | -| Boot | Boot#### number, active/hidden state, category, description, device path summary, launch selected option. | Boot order editing and boot policy. | Boot Maintenance Manager and platform boot HII. | +| Boot | Boot#### number, active/hidden state, category, description, and device path summary. Entries are launchable in ModernSetupApp; Enter attempts the selected Boot#### through UefiBootManagerLib. | Direct Boot#### launch, boot order editing, and boot policy. | Native Boot Manager, Boot Maintenance Manager, and platform boot HII. | | Devices | HII formsets, device path inventory, capability providers. | Driver/device setup pages. | Device Manager, Driver Health, and each driver formset. | | Security | Secure Boot, Setup Mode, PK/KEK/db/dbx presence, TPM/TCG/TCM protocol presence. | Key management, TPM physical presence, measured boot policy. | SecurityPkg/platform security HII. | | Firmware Update | Capsule runtime support, capsule protocol, capsule report presence, firmware revision. | Capsule/update/recovery application. | Capsule/update HII or platform update application. | @@ -74,7 +74,7 @@ productization coverage, and `P2` means more platform-specific follow-up scope. | Domain / subsystem | Example options | Product fit | Architecture notes | ModernSetup handling | Priority | | --- | --- | --- | --- | --- | --- | | System overview / Main | Firmware vendor/version, build date, board SKU, serial, UUID, language, date/time, administrator/user password status. | Server, workstation, desktop, notebook, embedded. | Architecture-neutral; SMBIOS is common on x86/Arm servers and optional on RISC-V/LoongArch; RTC and language are standard UEFI surfaces. | Show read-only identity/status; provide native date/time, language, or password entry points when present. | P0 | -| Boot manager / boot policy | Boot order, one-time boot, UEFI/legacy mode when supported, PXE, HTTP boot, USB boot, network stack, boot timeout, fast boot. | All product classes; network boot is especially common on servers, workstations, and embedded products. | UEFI Boot#### is architecture-neutral; CSM/legacy is mainly an x86 client legacy item; HTTP/PXE depends on the NIC stack. | Show the Boot#### list and launch the selected option; editing and policy remain Boot Maintenance/platform HII-owned. | P0 | +| Boot manager / boot policy | Boot order, one-time boot, UEFI/legacy mode when supported, PXE, HTTP boot, USB boot, network stack, boot timeout, fast boot. | All product classes; network boot is especially common on servers, workstations, and embedded products. | UEFI Boot#### is architecture-neutral; CSM/legacy is mainly an x86 client legacy item; HTTP/PXE depends on the NIC stack. | Show the Boot#### list and launch the selected entry through UefiBootManagerLib; editing and policy remain Boot Maintenance/platform HII-owned. | P0 | | Security / identity | Secure Boot, Setup Mode, key databases, TPM/PTT/fTPM/TCM, measured boot, physical presence, chassis intrusion, passwords. | All product classes; most common on servers, workstations, and notebooks. | Secure Boot variables are UEFI-standard; TPM/TCG is common on x86/Arm and optional on RISC-V/LoongArch; China-market platforms may expose TCM. | Show security posture and protocol/key presence; key management, passwords, physical-presence flows, and measured-boot policy stay native. | P0 | | Firmware update / recovery | Capsule support, BIOS flash utility, recovery capsule, rollback prevention, dual-bank image, update log. | All product classes; embedded and server products emphasize recovery and lifecycle. | UEFI capsule interfaces are architecture-neutral; recovery media and flash layout are board-specific. | Show capability/status and open native update/recovery app or HII; the App does not perform flash writes. | P0 | | Device / HII formset inventory | Device Manager, Driver Health, storage controller pages, NIC pages, USB controller pages, option ROM pages. | All product classes. | HII database and device paths keep this architecture-neutral; bus availability depends on platform. | Enumerate entries and open owning formsets through FormBrowser2; the App does not parse IFR or implement ConfigAccess. | P0 | diff --git a/Docs/IbvAndPlatformSetupSurvey.zh-CN.md b/Docs/IbvAndPlatformSetupSurvey.zh-CN.md index fb47fe8..a2b9923 100644 --- a/Docs/IbvAndPlatformSetupSurvey.zh-CN.md +++ b/Docs/IbvAndPlatformSetupSurvey.zh-CN.md @@ -38,7 +38,7 @@ ASUS、Gigabyte、MSI、ASRock、Dell、HP、Lenovo、HPE、Supermicro、Intel N | 表面 | App 直接显示 | App 仅提供入口 | 原生 FormBrowser 归属 | | --- | --- | --- | --- | | System / Dashboard | Firmware vendor/revision、architecture、form factor、boot mode、memory、display mode、Secure Boot、provider availability。 | 详细平台 inventory。 | Platform inventory HII 或 SMBIOS/ACPI-specific pages。 | -| Boot | Boot#### number、active/hidden state、category、description、device path summary、launch selected option。 | Boot order editing 和 boot policy。 | Boot Maintenance Manager 和 platform boot HII。 | +| Boot | Boot#### number、active/hidden state、category、description、device path summary。ModernSetupApp 中条目可启动;回车通过 UefiBootManagerLib 尝试启动所选 Boot####。 | 直接启动 Boot####、Boot order editing 和 boot policy。 | 原生 Boot Manager、Boot Maintenance Manager 和 platform boot HII。 | | Devices | HII formsets、device path inventory、capability providers。 | Driver/device setup pages。 | Device Manager、Driver Health 和各 driver formset。 | | Security | Secure Boot、Setup Mode、PK/KEK/db/dbx presence、TPM/TCG/TCM protocol presence。 | Key management、TPM physical presence、measured boot policy。 | SecurityPkg/platform security HII。 | | Firmware Update | Capsule runtime support、capsule protocol、capsule report presence、firmware revision。 | Capsule/update/recovery application。 | Capsule/update HII 或 platform update application。 | @@ -58,7 +58,7 @@ ASUS、Gigabyte、MSI、ASRock、Dell、HP、Lenovo、HPE、Supermicro、Intel N | 领域 / 子系统 | 示例选项 | 适用产品 | 架构说明 | ModernSetup 处理方式 | 优先级 | | --- | --- | --- | --- | --- | --- | | System overview / Main | Firmware vendor/version、build date、board SKU、serial、UUID、language、date/time、administrator/user password 状态。 | 服务器、工作站、桌面、笔记本、嵌入式。 | 架构中立;SMBIOS 在 x86/Arm 服务器常见,在 RISC-V/LoongArch 上可选;RTC 和 language 是 UEFI 标准界面。 | 展示只读身份/状态;存在原生 date/time、language、password 页面时只提供入口。 | P0 | -| Boot manager / boot policy | Boot order、one-time boot、支持时的 UEFI/legacy mode、PXE、HTTP boot、USB boot、network stack、boot timeout、fast boot。 | 所有产品类型;网络启动在服务器、工作站、嵌入式上尤其常见。 | UEFI Boot#### 架构中立;CSM/legacy 主要是 x86 客户端遗留项;HTTP/PXE 取决于 NIC 栈。 | 展示 Boot#### 清单并启动所选项;编辑和策略仍归 Boot Maintenance/平台 HII。 | P0 | +| Boot manager / boot policy | Boot order、one-time boot、支持时的 UEFI/legacy mode、PXE、HTTP boot、USB boot、network stack、boot timeout、fast boot。 | 所有产品类型;网络启动在服务器、工作站、嵌入式上尤其常见。 | UEFI Boot#### 架构中立;CSM/legacy 主要是 x86 客户端遗留项;HTTP/PXE 取决于 NIC 栈。 | 展示 Boot#### 清单,并通过 UefiBootManagerLib 启动所选条目;编辑和策略仍归 Boot Maintenance/平台 HII。 | P0 | | Security / identity | Secure Boot、Setup Mode、key databases、TPM/PTT/fTPM/TCM、measured boot、physical presence、chassis intrusion、passwords。 | 所有产品类型;服务器、工作站、笔记本最常见。 | Secure Boot 变量是 UEFI 标准;TPM/TCG 在 x86/Arm 常见,在 RISC-V/LoongArch 可选;面向中国市场的平台可能出现 TCM。 | 展示安全态势和协议/key 存在性;key 管理、password、physical-presence 流程和 measured-boot 策略保持原生。 | P0 | | Firmware update / recovery | Capsule support、BIOS flash utility、recovery capsule、rollback prevention、dual-bank image、update log。 | 所有产品类型;嵌入式和服务器更强调恢复与生命周期。 | UEFI capsule 接口架构中立;恢复介质和 flash layout 与主板相关。 | 展示能力/状态,并打开原生 update/recovery app 或 HII;App 不执行 flash 写入。 | P0 | | Device / HII formset inventory | Device Manager、Driver Health、storage controller pages、NIC pages、USB controller pages、option ROM pages。 | 所有产品类型。 | 通过 HII database 和 device path 保持架构中立;总线可用性取决于平台。 | 枚举入口,并通过 FormBrowser2 打开归属 formset;App 不解析 IFR、不实现 ConfigAccess。 | P0 | diff --git a/Docs/ProductizationFeatureMatrix.md b/Docs/ProductizationFeatureMatrix.md index 1c46297..c97dbde 100644 --- a/Docs/ProductizationFeatureMatrix.md +++ b/Docs/ProductizationFeatureMatrix.md @@ -47,7 +47,7 @@ show a summary or entry point, then open the owning HII form through | Page | Common purpose | App should show | Complex settings owner | Current status | | --- | --- | --- | --- | --- | | Dashboard | First-glance platform state. | Firmware vendor/revision, architecture, form factor, boot mode, platform name, memory, display mode, boot count, Secure Boot state, HII/device count, provider availability. | App data providers. | Basic implemented. | -| Boot | Boot inventory and launch entry. | `BootOrder`, `Boot####`, active/hidden state, category, device-path summary, launch selected option. | Boot Maintenance HII pages for editing and advanced policy. | Basic implemented. | +| Boot | Boot inventory, selected-entry launch, and native Boot Manager fallback. | `BootOrder` / `Boot####` active/hidden state, category, and device-path summaries. Enter launches the selected visible Boot#### entry. | Boot Maintenance HII pages for editing and advanced policy. | Basic implemented. | | Devices / HII | Entry point to platform setup pages and device inventory. | HII formsets, driver/device path rows, Driver Health entry, inventory rows. | Each driver formset via FormBrowser2. | Basic implemented. | | Security | Read-only security posture. | Secure Boot, Setup Mode, PK/KEK/db/dbx state, TPM/TCG/TCM presence when available. | Security HII pages and platform policy drivers. | Basic implemented. | | Firmware Update | Firmware lifecycle entry point. | Capsule support, firmware version, recovery/update entry, last update state when available. | Capsule/update HII or platform update app. | Basic read-only implemented. | @@ -70,7 +70,7 @@ App-owned control. | Domain / subsystem | Standard App IA | Provider / data source direction | App display / entry behavior | Native owner / non-goal | | --- | --- | --- | --- | --- | | System overview / Main | Dashboard; Exit for language/session affordances. | `ModernUiPlatformDataLib`, UEFI system table, SMBIOS when available. | Show firmware, architecture, form factor, platform name, memory/display summary, language/session hints. | Date/time, password, defaults, and save/discard workflows remain native. | -| Boot manager / boot policy | Boot; Dashboard quick category. | `ModernUiBootDataLib`, Boot#### variables, Boot Manager services. | List boot entries, active/hidden/category/path summary, and launch selected option. | Boot order editing, one-time boot policy, fast boot, PXE/HTTP policy stay Boot Maintenance/platform HII. | +| Boot manager / boot policy | Boot; Dashboard quick category. | `ModernUiBootDataLib`, Boot#### variables, Boot Manager services. | List boot entries and active/hidden/category/path summaries; Enter launches the selected entry via UefiBootManagerLib. | Boot order editing, one-time boot policy, fast boot, PXE/HTTP policy stay Boot Maintenance/platform HII. | | Device / HII formset inventory | Devices / HII; Dashboard quick category. | `ModernUiDeviceDataLib`, HII database, device paths, Driver Health. | List native setup/device entries and open them via `EFI_FORM_BROWSER2_PROTOCOL.SendForm()`. | No IFR parsing, ConfigAccess implementation, form mutation, or varstore writes in App. | | Security / identity | Security summary and Dashboard status. | `ModernUiSecurityDataLib`, Secure Boot variables, TCG/TCM/TPM protocol probes. | Show Secure Boot, Setup Mode, key presence, and TPM/TCM availability as posture. | Key enrollment, password, physical presence, measured boot policy, chassis policy remain native. | | Firmware update / recovery | Firmware Update category; Dashboard lifecycle card. | `ModernUiFirmwareDataLib`, capsule runtime/protocol/report probes, platform update entry hints. | Show capsule/update/recovery availability and route to native updater when exposed. | No capsule construction, flash programming, rollback policy, or recovery writes in App. | @@ -147,7 +147,7 @@ view of common App/provider behavior, not a request to hide `ARCH=X64`, | Provider | Responsibility | Minimum v1 behavior | Failure behavior | | --- | --- | --- | --- | | `ModernUiPlatformDataLib` | Firmware, architecture, memory, display, platform name. | Fill dashboard strings and memory summary. | Show `Unknown` or `N/A`; never ASSERT. | -| `ModernUiBootDataLib` | Boot option enumeration and launch. | Show `Boot####` active/hidden/category/path summary; launch selected option. | Show empty state or returned `EFI_STATUS`. | +| `ModernUiBootDataLib` | Boot option enumeration and selected-entry launch. | Show `Boot####` active/hidden/category/path summary; launch the selected visible entry through UefiBootManagerLib while native Boot Manager remains available as fallback. | Show empty state or returned `EFI_STATUS`. | | `ModernUiDeviceDataLib` | HII formset/device entry discovery. | List HII entries and open forms through FormBrowser2. | Keep row read-only and show `EFI_STATUS`. | | `ModernUiSecurityDataLib` | Secure Boot, key database, and TCG protocol state. | Read standard variables and protocol presence as read-only. | Show `Unknown`; no writes. | | `ModernUiFirmwareDataLib` | Capsule/update/recovery status. | Detect capsule runtime services, capsule architectural protocol, and capsule report presence. | Show `N/A`; open native update path when present. | diff --git a/Docs/ProductizationFeatureMatrix.zh-CN.md b/Docs/ProductizationFeatureMatrix.zh-CN.md index e3f701a..ab8fd8d 100644 --- a/Docs/ProductizationFeatureMatrix.zh-CN.md +++ b/Docs/ProductizationFeatureMatrix.zh-CN.md @@ -37,7 +37,7 @@ ModernSetup 有两层 XArch 产品化边界: | 页面 | 通用目的 | App 应显示 | 复杂设置归属 | 当前状态 | | --- | --- | --- | --- | --- | | Dashboard | 第一眼平台状态。 | firmware vendor/revision、architecture、form factor、boot mode、platform name、memory、display mode、boot count、Secure Boot、HII/device count、provider availability。 | App data providers。 | Basic implemented。 | -| Boot | Boot 清单和启动入口。 | `BootOrder`、`Boot####`、active/hidden state、category、device-path summary、launch selected option。 | Boot Maintenance HII pages。 | Basic implemented。 | +| Boot | Boot 清单、所选条目启动和原生 Boot Manager fallback。 | `BootOrder` / `Boot####` active/hidden state、category、device-path summary。回车启动当前可见 Boot#### 条目。 | Boot Maintenance HII pages。 | Basic implemented。 | | Devices / HII | 平台 Setup 页面和设备 inventory 入口。 | HII formsets、driver/device path rows、Driver Health entry、inventory rows。 | Each driver formset via FormBrowser2。 | Basic implemented。 | | Security | 只读安全态势。 | Secure Boot、Setup Mode、PK/KEK/db/dbx、TPM/TCG/TCM presence。 | Security HII pages and platform policy drivers。 | Basic implemented。 | | Firmware Update | 固件生命周期入口。 | Capsule support、firmware version、recovery/update entry、last update state。 | Capsule/update HII or platform update app。 | Basic read-only implemented。 | @@ -55,7 +55,7 @@ ModernSetup 有两层 XArch 产品化边界: | 领域 / 子系统 | 标准 App IA | Provider / 数据方向 | App 行为 | 原生归属 / 非目标 | | --- | --- | --- | --- | --- | | System overview / Main | Dashboard;Exit 语言/会话入口。 | `ModernUiPlatformDataLib`、UEFI system table、SMBIOS。 | 显示固件、架构、形态、平台名、内存/显示摘要。 | date/time、password、defaults、save/discard 保持原生。 | -| Boot manager / boot policy | Boot;Dashboard 快捷分类。 | `ModernUiBootDataLib`、Boot#### variables、Boot Manager services。 | 列出 boot entries、状态、分类、路径摘要并启动选中项。 | boot order 编辑、one-time boot、fast boot、PXE/HTTP policy 保持原生。 | +| Boot manager / boot policy | Boot;Dashboard 快捷分类。 | `ModernUiBootDataLib`、Boot#### variables、Boot Manager services。 | 列出 boot entries、状态、分类、路径摘要;回车通过 UefiBootManagerLib 启动所选条目。 | boot order 编辑、one-time boot、fast boot、PXE/HTTP policy 保持原生。 | | Device / HII formset inventory | Devices / HII。 | `ModernUiDeviceDataLib`、HII database、device paths、Driver Health。 | 列出原生 setup/device entries 并用 `EFI_FORM_BROWSER2_PROTOCOL.SendForm()` 打开。 | App 不解析 IFR、不实现 ConfigAccess、不写 varstore。 | | Security / identity | Security summary。 | `ModernUiSecurityDataLib`、Secure Boot variables、TCG/TCM/TPM probes。 | 显示 Secure Boot、Setup Mode、key presence、TPM/TCM availability。 | key enrollment、password、physical presence、measured boot policy 保持原生。 | | Firmware update / recovery | Firmware Update。 | `ModernUiFirmwareDataLib`、capsule probes、platform update hints。 | 显示 update/recovery 可用性并路由到原生 updater。 | 不构造 capsule、不刷写 flash、不写 recovery policy。 | diff --git a/Library/ModernUiStringLib/ModernUiStringLib.c b/Library/ModernUiStringLib/ModernUiStringLib.c index 0c23874..21c4799 100644 --- a/Library/ModernUiStringLib/ModernUiStringLib.c +++ b/Library/ModernUiStringLib/ModernUiStringLib.c @@ -28,7 +28,7 @@ STATIC CONST CHAR16 *mEnglishStrings[ModernUiStringMax] = { L"Setup Categories", L"Choose a setup category", L"Boot", - L"Boot order and entries", + L"Read-only Boot#### summaries", L"Devices", L"Firmware-visible handles", L"Security", @@ -64,7 +64,7 @@ STATIC CONST CHAR16 *mEnglishStrings[ModernUiStringMax] = { L"%u entries", L"Prototype Status", L"GOP renderer online. Keyboard navigation is active.", - L"Enter launches the selected boot option. Boot order editing is not implemented yet.", + L"Select a Boot#### entry and press Enter to launch it. Native Boot Manager remains available on Exit.", L"No visible boot options found.", L"(no description)", L"Active", @@ -160,7 +160,7 @@ STATIC CONST CHAR16 *mSimplifiedChineseStrings[ModernUiStringMax] = { L"设置分类", L"选择设置分类", L"启动", - L"启动顺序与启动项", + L"启动项", L"设备", L"固件可见句柄", L"安全", @@ -196,7 +196,7 @@ STATIC CONST CHAR16 *mSimplifiedChineseStrings[ModernUiStringMax] = { L"%u 项", L"原型状态", L"GOP渲染已就绪,键盘导航已启用。", - L"回车启动选中的启动项。启动顺序编辑尚未实现。", + L"选择Boot####,回车启动。Exit页可打开Boot Manager。", L"未找到可见启动项。", L"(无描述)", L"启用", @@ -241,7 +241,7 @@ STATIC CONST CHAR16 *mSimplifiedChineseStrings[ModernUiStringMax] = { L"v1中密钥管理暂为只读。", L"使用上/下选择操作,回车执行。", L"继续启动", - L"启动传统UiApp备用界面", + L"打开Boot Manager", L"重启系统", L"语言:%s", L"语言", @@ -257,7 +257,7 @@ STATIC CONST CHAR16 *mSimplifiedChineseStrings[ModernUiStringMax] = { L"回车打开选中表单,或切换支持的设置值。", L"RouteConfig返回:%r", L"启动项返回:%r", - L"传统UiApp返回:%r", + L"Boot Manager返回:%r", L"ModernSetupApp:图形初始化失败:%r\n", L"启动与设备", L"平台健康",