最近有一个有趣的想法:如何在 Setup 界面上添加字符,比如:增加 www.lab-z.com这个字样。
经过在 EDK2 代码中搜索,在MdeModulePkg\Library\CustomizedDisplayLib\CustomizedDisplayLibInternal.c 文件中找到如下函数:
/**
Print framework and form title for a page.
@param[in] FormData Form Data to be shown in Page
**/
VOID
PrintFramework (
IN FORM_DISPLAY_ENGINE_FORM *FormData
)
Setup界面是在这里进行绘制的,最简单的修改就是在绘制完成之后写上需要的字符。
/**
Print framework and form title for a page.
@param[in] FormData Form Data to be shown in Page
**/
VOID
PrintFramework (
IN FORM_DISPLAY_ENGINE_FORM *FormData
)
{
UINTN Index;
CHAR16 Character;
CHAR16 *Buffer;
UINTN Row;
CHAR16 *TitleStr;
UINTN TitleColumn;
CHAR16 StrBuffer[]=L"WWW.LAB-Z.COM";
if (gClassOfVfr != FORMSET_CLASS_PLATFORM_SETUP) {
//
// Only Setup page needs Framework
//
ClearLines (
gScreenDimensions.LeftColumn,
gScreenDimensions.RightColumn,
gScreenDimensions.BottomRow - STATUS_BAR_HEIGHT - gFooterHeight,
gScreenDimensions.BottomRow - STATUS_BAR_HEIGHT - 1,
KEYHELP_TEXT | KEYHELP_BACKGROUND
);
return;
}
…………………………………………….
…………………………………………….
…………………………………………….
Character = BOXDRAW_UP_RIGHT;
PrintCharAt (gScreenDimensions.LeftColumn, gScreenDimensions.BottomRow - STATUS_BAR_HEIGHT - 1, Character);
PrintStringAt ((UINTN)-1, (UINTN)-1, Buffer);
Character = BOXDRAW_UP_LEFT;
PrintCharAt ((UINTN)-1, (UINTN)-1, Character);
FreePool (Buffer);
//LABZ_Debug_Start
PrintStringAt (1, 0, StrBuffer);
//LABZ_Debug_End
}
运行结果: