Implement BlClearConsoleLine() routine
This commit is contained in:
parent
ec861c6296
commit
10aaf7e24e
@ -47,6 +47,7 @@ typedef EFI_STATUS (*PBL_ALLOCATE_PAGES)(IN UINT64 Size, OUT PEFI_PHYSICAL_ADDRE
|
|||||||
typedef EFI_STATUS (*PBL_ALLOCATE_POOL)(IN UINT_PTR Size, OUT PVOID *Memory);
|
typedef EFI_STATUS (*PBL_ALLOCATE_POOL)(IN UINT_PTR Size, OUT PVOID *Memory);
|
||||||
typedef VOID (*PBL_BOOTMENU_INITIALIZE_OS_LIST)(OUT PXTBL_BOOTMENU_ITEM MenuEntries, OUT PULONG EntriesCount, OUT PULONG DefaultId);
|
typedef VOID (*PBL_BOOTMENU_INITIALIZE_OS_LIST)(OUT PXTBL_BOOTMENU_ITEM MenuEntries, OUT PULONG EntriesCount, OUT PULONG DefaultId);
|
||||||
typedef EFI_STATUS (*PBL_CLOSE_VOLUME)(IN PEFI_HANDLE VolumeHandle);
|
typedef EFI_STATUS (*PBL_CLOSE_VOLUME)(IN PEFI_HANDLE VolumeHandle);
|
||||||
|
typedef VOID (*PBL_CLEAR_CONSOLE_LINE)(IN ULONGLONG LineNo);
|
||||||
typedef VOID (*PBL_CONSOLE_CLEAR_SCREEN)();
|
typedef VOID (*PBL_CONSOLE_CLEAR_SCREEN)();
|
||||||
typedef VOID (*PBL_CONSOLE_DISABLE_CURSOR)();
|
typedef VOID (*PBL_CONSOLE_DISABLE_CURSOR)();
|
||||||
typedef VOID (*PBL_CONSOLE_ENABLE_CURSOR)();
|
typedef VOID (*PBL_CONSOLE_ENABLE_CURSOR)();
|
||||||
@ -114,6 +115,7 @@ typedef struct _XTBL_LOADER_PROTOCOL
|
|||||||
{
|
{
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
|
PBL_CLEAR_CONSOLE_LINE ClearLine;
|
||||||
PBL_CONSOLE_CLEAR_SCREEN ClearScreen;
|
PBL_CONSOLE_CLEAR_SCREEN ClearScreen;
|
||||||
PBL_CONSOLE_DISABLE_CURSOR DisableCursor;
|
PBL_CONSOLE_DISABLE_CURSOR DisableCursor;
|
||||||
PBL_CONSOLE_ENABLE_CURSOR EnableCursor;
|
PBL_CONSOLE_ENABLE_CURSOR EnableCursor;
|
||||||
|
@ -9,6 +9,34 @@
|
|||||||
#include <xtldr.h>
|
#include <xtldr.h>
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clears a specified line on the UEFI text console.
|
||||||
|
*
|
||||||
|
* @param LineNo
|
||||||
|
* Supplies a line number to clear.
|
||||||
|
*
|
||||||
|
* @return This routine does not return any value.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTCDECL
|
||||||
|
VOID
|
||||||
|
BlClearConsoleLine(IN ULONGLONG LineNo)
|
||||||
|
{
|
||||||
|
UINT_PTR Index, ResX, ResY;
|
||||||
|
|
||||||
|
/* Query console mode */
|
||||||
|
BlQueryConsoleMode(&ResX, &ResY);
|
||||||
|
|
||||||
|
/* Set cursor position and clear line */
|
||||||
|
BlSetCursorPosition(0, LineNo);
|
||||||
|
for(Index = 0; Index < ResX; Index++)
|
||||||
|
{
|
||||||
|
/* Clear line */
|
||||||
|
BlConsoleWrite(L" ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This routine clears the UEFI console screen.
|
* This routine clears the UEFI console screen.
|
||||||
*
|
*
|
||||||
|
@ -16,6 +16,10 @@
|
|||||||
typedef VOID (BMPRINTCHAR)(IN USHORT Character);
|
typedef VOID (BMPRINTCHAR)(IN USHORT Character);
|
||||||
|
|
||||||
/* XTLDR routines forward references */
|
/* XTLDR routines forward references */
|
||||||
|
XTCDECL
|
||||||
|
VOID
|
||||||
|
BlClearConsoleLine(IN ULONGLONG LineNo);
|
||||||
|
|
||||||
XTCDECL
|
XTCDECL
|
||||||
VOID
|
VOID
|
||||||
BlClearConsoleScreen();
|
BlClearConsoleScreen();
|
||||||
|
@ -90,6 +90,7 @@ BlpRegisterXtLoaderProtocol()
|
|||||||
EFI_HANDLE Handle = NULL;
|
EFI_HANDLE Handle = NULL;
|
||||||
|
|
||||||
/* Set all routines available via loader protocol */
|
/* Set all routines available via loader protocol */
|
||||||
|
LdrProtocol.Console.ClearLine = BlClearConsoleLine;
|
||||||
LdrProtocol.Console.ClearScreen = BlClearConsoleScreen;
|
LdrProtocol.Console.ClearScreen = BlClearConsoleScreen;
|
||||||
LdrProtocol.Console.DisableCursor = BlDisableConsoleCursor;
|
LdrProtocol.Console.DisableCursor = BlDisableConsoleCursor;
|
||||||
LdrProtocol.Console.EnableCursor = BlEnableConsoleCursor;
|
LdrProtocol.Console.EnableCursor = BlEnableConsoleCursor;
|
||||||
|
Loading…
Reference in New Issue
Block a user