diff --git a/sdk/xtdk/bltypes.h b/sdk/xtdk/bltypes.h index 09e20c8..1feb9fd 100644 --- a/sdk/xtdk/bltypes.h +++ b/sdk/xtdk/bltypes.h @@ -42,7 +42,7 @@ /* TUI dialog box maximum width */ #define XTBL_TUI_MAX_DIALOG_WIDTH 100 -/* Loader protocol routine pointers */ +/* Boot Loader protocol routine pointers */ typedef EFI_STATUS (*PBL_ALLOCATE_PAGES)(IN UINT64 Size, OUT PEFI_PHYSICAL_ADDRESS Memory); typedef EFI_STATUS (*PBL_ALLOCATE_POOL)(IN UINT_PTR Size, OUT PVOID *Memory); typedef EFI_STATUS (*PBL_CLOSE_VOLUME)(IN PEFI_HANDLE VolumeHandle); @@ -65,6 +65,10 @@ typedef EFI_STATUS (*PBL_OPEN_VOLUME)(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, O typedef EFI_STATUS (*PBL_OPEN_XT_PROTOCOL)(OUT PVOID *ProtocolHandler, IN PEFI_GUID ProtocolGuid); typedef EFI_STATUS (*PBL_READ_FILE)(IN PEFI_FILE_HANDLE DirHandle, IN CONST PWCHAR FileName, OUT PVOID *FileData, OUT PSIZE_T FileSize); typedef VOID (*PBL_SLEEP_EXECUTION)(IN ULONG_PTR Milliseconds); +typedef VOID (*PBL_TUI_DISPLAY_ERROR_DIALOG)(IN PWCHAR Caption, IN PWCHAR Message); +typedef VOID (*PBL_TUI_DISPLAY_INFO_DIALOG)(IN PWCHAR Caption, IN PWCHAR Message); +typedef XTBL_DIALOG_HANDLE (*PBL_TUI_DISPLAY_PROGRESS_DIALOG)(IN PWCHAR Caption, IN PWCHAR Message, IN UCHAR Percentage); +typedef VOID (*PBL_TUI_UPDATE_PROGRESS_BAR)(IN PXTBL_DIALOG_HANDLE Handle, IN PWCHAR Message, IN UCHAR Percentage); typedef EFI_STATUS (*PBL_WAIT_FOR_EFI_EVENT)(IN UINT_PTR NumberOfEvents, IN PEFI_EVENT Event, OUT PUINT_PTR Index); /* XTLDR Configuration data */ @@ -143,6 +147,13 @@ typedef struct _XTBL_LOADER_PROTOCOL PBL_OPEN_XT_PROTOCOL Open; } Protocol; struct + { + PBL_TUI_DISPLAY_ERROR_DIALOG DisplayErrorDialog; + PBL_TUI_DISPLAY_INFO_DIALOG DisplayInfoDialog; + PBL_TUI_DISPLAY_PROGRESS_DIALOG DisplayProgressDialog; + PBL_TUI_UPDATE_PROGRESS_BAR UpdateProgressBar; + } Tui; + struct { PBL_EXIT_BOOT_SERVICES ExitBootServices; PBL_GET_SECURE_BOOT_STATUS GetSecureBootStatus; diff --git a/xtldr2/protocol.c b/xtldr2/protocol.c index 2ac749a..b1ebd77 100644 --- a/xtldr2/protocol.c +++ b/xtldr2/protocol.c @@ -109,6 +109,10 @@ BlpRegisterXtLoaderProtocol() LdrProtocol.Memory.FreePages = BlMemoryFreePages; LdrProtocol.Memory.FreePool = BlMemoryFreePool; LdrProtocol.Protocol.Open = BlOpenXtProtocol; + LdrProtocol.Tui.DisplayErrorDialog = BlDisplayErrorDialog; + LdrProtocol.Tui.DisplayInfoDialog = BlDisplayInfoDialog; + LdrProtocol.Tui.DisplayProgressDialog = BlDisplayProgressDialog; + LdrProtocol.Tui.UpdateProgressBar = BlUpdateProgressBar; LdrProtocol.Util.ExitBootServices = BlExitBootServices; LdrProtocol.Util.GetSecureBootStatus = BlGetSecureBootStatus; LdrProtocol.Util.SleepExecution = BlSleepExecution;