前面实验了颜色填充,这里实验一下屏幕的拷贝。测试很简单,就是屏幕上一个区域的内容copy到另外的位置.
代码如下:
#include <Uefi.h> #include <Library/UefiLib.h> #include <Libra[......]
前面实验了颜色填充,这里实验一下屏幕的拷贝。测试很简单,就是屏幕上一个区域的内容copy到另外的位置.
代码如下:
#include <Uefi.h> #include <Library/UefiLib.h> #include <Libra[......]
屏幕显示功能搭配取按键信息的功能可以实现一个简单的菜单,用户可以使用上下键移动后选项,回车确认,ESC退出。
代码本身不复杂
#include <Uefi.h> #include <Library/UefiLib.h> #include <Libr[......]
前面展示了在一个程序中调用另外一个程序的方法,还有加载过程中获取被加载程序的一些基本信息。其中的一个是ImageBase。这里做一个实验来验证上面显示的ImageBase是否正确。
上次的HelloWorld.c代码中我们还加入一条显示UefiMain在内存中的位置。
#include[......]
某些情况下,我们有在自己的程序中调用另外一个 EFI 程序的需求。
关于这个问题【参考1】建议参考Shell的源程序。如果有时间,建议阅读这一段代码,相信对于具体的实现很有帮助。
“RunCommandOrFile()
==> case Efi_Application:[......]
很早之前,BIOS如果想把一些值传递给OS,通常都是使用CMOS的。但是这样的方法有着下面的缺点:复杂度高,需要和使用位置的人协商,否则没人知道你放在CMOS中什么地方
不确定性大,可能会在代码中冲突,无法确定别人是否也用到你选择的那个CMOS位
每次传递值少,CMOS一般也就128 BYTES[......]
目标:写一个小程序来枚举当前系统中的盘符。比如:FS0: FS1: 等等。
和这个需求最相近的参考文件是 map 功能,每次启动shell的时候他都会展示一下当前系统中的全部盘符。这个功能的代码在 ShellPkg\Library\UefiShellLevel2CommandsLib\Map.[......]
前面介绍了,用CLib我们可以编写出普通C语言一样的代码。入口是 main (int Argc, char **Argv),但是如何获得当前的 ImageHandle 呢?【参考1】给出了一个答案。查看实际的入口ShellCEntryLib (ShellPkg\Library\UefiShellCE[......]