From 3cd55260e6aeff5e5d7d04838ce44f8704d55abd Mon Sep 17 00:00:00 2001 From: Rafal Kupiec Date: Tue, 19 Mar 2024 17:11:38 +0100 Subject: [PATCH] Expose BlEnterFirmwareSetup() routine via XTLDR protocol --- sdk/xtdk/bltypes.h | 2 ++ xtldr/protocol.c | 1 + 2 files changed, 3 insertions(+) diff --git a/sdk/xtdk/bltypes.h b/sdk/xtdk/bltypes.h index 1b4d5ad..f12edbf 100644 --- a/sdk/xtdk/bltypes.h +++ b/sdk/xtdk/bltypes.h @@ -64,6 +64,7 @@ typedef VOID (*PBL_CONSOLE_SET_CURSOR_POSITION)(IN ULONGLONG PosX, IN ULONGLONG typedef VOID (*PBL_CONSOLE_WRITE)(IN PUSHORT String); typedef VOID (XTAPI *PBL_COPY_MEMORY)(OUT PVOID Destination, IN PCVOID Source, IN SIZE_T Length); typedef VOID (*PBL_DEBUG_PRINT)(IN PUSHORT Format, IN ...); +typedef EFI_STATUS (*PBL_ENTER_FIRMWARE_SETUP)(); typedef EFI_STATUS (*PBL_EXIT_BOOT_SERVICES)(); typedef EFI_STATUS (*PBL_FIND_BOOT_PROTOCOL)(IN PWCHAR SystemType, OUT PEFI_GUID BootProtocolGuid); typedef EFI_STATUS (*PBL_FREE_PAGES)(IN ULONGLONG Size, IN EFI_PHYSICAL_ADDRESS Memory); @@ -415,6 +416,7 @@ typedef struct _XTBL_LOADER_PROTOCOL } Tui; struct { + PBL_ENTER_FIRMWARE_SETUP EnterFirmwareSetup; PBL_EXIT_BOOT_SERVICES ExitBootServices; PBL_GET_CONFIGURATION_TABLE GetConfigurationTable; PBL_GET_EFI_VARIABLE GetEfiVariable; diff --git a/xtldr/protocol.c b/xtldr/protocol.c index f1e99b2..59394e1 100644 --- a/xtldr/protocol.c +++ b/xtldr/protocol.c @@ -918,6 +918,7 @@ BlpInstallXtLoaderProtocol() BlpLdrProtocol.Tui.DisplayInputDialog = BlDisplayInputDialog; BlpLdrProtocol.Tui.DisplayProgressDialog = BlDisplayProgressDialog; BlpLdrProtocol.Tui.UpdateProgressBar = BlUpdateProgressBar; + BlpLdrProtocol.Util.EnterFirmwareSetup = BlEnterFirmwareSetup; BlpLdrProtocol.Util.ExitBootServices = BlExitBootServices; BlpLdrProtocol.Util.GetConfigurationTable = BlGetConfigurationTable; BlpLdrProtocol.Util.GetEfiVariable = BlGetEfiVariable;