- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是创建 efi 应用程序的 super 新手。我的目标是在 efi 中创建一个小应用程序,在背景上显示一些文本。但是我坚持尝试在显示器上显示文本(最好是有一个自定义字体,但在这个阶段没有必要)。我希望应用程序(也)在苹果系统上运行(从 USB 启动)
如何找到有关 EFI 函数的良好文档?似乎很难找到好的例子等。
如何使用 EFI 在背景上显示文本?
这就是我到目前为止所得到的。我使用图形协议(protocol)将背景更改为一种颜色。如何在其上显示文本。输出字符串似乎不起作用。
#include "efibind.h"
#include "efidef.h"
#include "efidevp.h"
#include "eficon.h"
#include "efiapi.h"
#include "efierr.h"
#include "efiprot.h"
static EFI_GUID GraphicsOutputProtocolGUID = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID;
/**
* efi_main - The entry point for the EFI application
* @image: firmware-allocated handle that identifies the image
* @SystemTable: EFI system table
*/
EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *systemTable) {
EFI_BOOT_SERVICES *bs = systemTable->BootServices;
EFI_STATUS status;
EFI_GRAPHICS_OUTPUT_PROTOCOL *graphicsProtocol;
SIMPLE_TEXT_OUTPUT_INTERFACE *conOut = systemTable->ConOut;
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *info;
UINTN SizeOfInfo, sWidth, sHeight;
status = bs->LocateProtocol(&GraphicsOutputProtocolGUID, NULL,
(void**)&graphicsProtocol);
if (EFI_ERROR(status) || graphicsProtocol == NULL) {
conOut->OutputString(conOut, L"Failed to init gfx!\r\n");
return status;
}
conOut->ClearScreen(conOut);
//Switch to current mode so gfx is started.
status = graphicsProtocol->SetMode(graphicsProtocol, graphicsProtocol->Mode->Mode);
if (EFI_ERROR(status)) {
conOut->OutputString(conOut, L"Failed to set default mode!\r\n");
return status;
}
EFI_GRAPHICS_OUTPUT_BLT_PIXEL p;
p.Red = 200;
p.Green = 77;
p.Blue = 13;
graphicsProtocol->QueryMode(graphicsProtocol, graphicsProtocol->Mode->Mode, &SizeOfInfo, &info);
sWidth = info->HorizontalResolution;
sHeight = info->VerticalResolution;
status = graphicsProtocol->Blt(graphicsProtocol, &p, EfiBltVideoFill, 0, 0, 0, 0, sWidth, sHeight, 0);
while (1) {
conOut->OutputString(conOut, L"Some text that I want to display\r\n");
bs->Stall(500000);
}
return EFI_SUCCESS;
}
最佳答案
UEFI 支持图形输出。它还支持文本输出(这可能意味着输出到串行控制台,或文本呈现到图形控制台,或两者)。但是没有明确的方式以受控方式在它们之间进行交互。
提供带有文本元素的图形环境(BIOS 配置菜单、GRUB)的应用程序通常使用它们自己的框架来使用 GRAPHICS_OUTPUT_PROTOCOL 在图形控制台上绘制文本。
关于c - 如何在 EFI 图形模式下使用文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56028607/
我用的是 gnu-efi。 我不明白如何简单地读取文件。 我了解使用 BlockIOProtocol。 您能用一个简单的例子告诉我们吗? 最佳答案 我手头没有简单的例子,抱歉。但通常你会这样进行 在
目前,我在传统 (MBR) 模式下有以下引导链: GRUB2 -> Linux -> kexec to Grub4Dos -> Windows. 我想弄清楚这是否也可以在 UEFI 模式下实现,即从
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
问题#1:你好,所以我搞砸了我的 Windows(同时删除了 ubuntu 的双启动)并且它无法启动,所以我不得不使用闪存驱动器安装,在安装过程中我删除了 EFI 分区并且可用空间仍然存在在那里,但
EFI是一个小型化的Windows系统,今天教大家efi bios u盘启动设置方法,有些朋友想要为efi bios设置u盘启动但却不知道该怎么操作,相信大家看了下面这篇文章就会有一定的了解,希望对
安装Ubuntu18过程中,从u盘启动ubuntu安装,出现mmx64.efi not found问题 如下图: 制作好ubuntu启动盘之后在EFI/BOOT下会看到两个文
怎么解决 boot/efi 没有分配空间的问题呢。某些机器上,特别是有双硬盘的电脑,在装 Linux 双系统时,经常会提示 boot/efi 没有分配空间。有时候,明明已经分配了,还会提示没有分配,
规范的哪一部分详细说明了如何获取命令行参数? 最佳答案 你需要小心这个。 您可能知道,有一个 UEFI LoadedImage 协议(protocol) - 该协议(protocol)返回一个名为 E
我正在研究这个项目,以便在操作系统通过 EFI 应用程序启动后立即将文件写入本地文件系统。我需要知道这是否可能。如果是的话,请指导我一点。 谢谢 最佳答案 好的,我会好好提醒你... 首先,您枚举系统
我有在操作系统旁边运行一个小服务的想法,但我不确定这是否可能。我试图通过阅读一些文档来弄清楚,但没有走远,所以我的问题来了。 我阅读了有关 UEFI 运行时服务的信息。 是否有可能在固件中有一个小模块
我需要创建一个驱动程序,其行为类似于软件 RAID。例如。驱动程序将需要与多个物理磁盘(甚至可能是网络资源)进行通信,并且对于操作系统来说应该看起来像一个磁盘。 所以两个主要问题是: 1) EFI 驱
我是创建 efi 应用程序的 super 新手。我的目标是在 efi 中创建一个小应用程序,在背景上显示一些文本。但是我坚持尝试在显示器上显示文本(最好是有一个自定义字体,但在这个阶段没有必要)。我希
我有一台带有 GPT 驱动器的 Windows 机器。 我有一个 EFI 系统分区的 DOS 设备名称作为 bcdedit 的输出。 我想打开这个分区的句柄并通过 QueryDosDevice() 获
我想尝试为 EFI 编程,所以我使用 virtualbox 创建了一个 VM,选中“启用 efi”选项并将 CD 留空。 efi shell 应该如何引导,但我只看到 BLK0、BLK1 等,而不是
安装Ubuntu后,EFI系统分区的/efi/UBUNTU/里面有几个*.efi文件: GRUBX64.EFI MOKMANAG.EFI SHIMX64.EFI mmx64.efi fwupx64.e
是否可以在 BDS 阶段之前自动加载和执行 EFI 应用程序,就在加载所有 DXE 驱动程序之后? 如果我在 DXE 驱动程序之后将应用程序包含在 .fdf 文件中,它会自动加载和执行吗? 最佳答案
通过关注此 tutorial ,我能够创建一个简单的 efi 应用程序,当 时打印 hello world |从 uefi shell 执行 .但是,我想知道如何创建可启动的 EFI 镜像。我尝试在
我正在使用 FindFirstVolume/FindNextVolume 获取机器上所有卷的列表。这很好用,但奇怪的是 EFI 系统分区由于某种原因被跳过了。另一方面,Diskpart 返回 EFI
我想使用 Print 函数调用将一些文本打印到屏幕上。有没有什么方法(或任何其他函数)来设置文本的颜色? 最佳答案 这将设置您的打印颜色: uefi_call_wrapper(SystemTable-
目前我正在使用 efi API 进行编程。 如何在 efi 编程中使用?我想知道如何在efi中编写argv和argc。 到目前为止编写的c代码: #include int main(int argc
我是一名优秀的程序员,十分优秀!