我是UEFI应用程序开发的新手。
我的要求是,
我需要从我的UEFI应用程序(app.efi)源代码中运行UEFI命令。需要指导我如何做到这一点。
例如,
UEFI中的
cp命令用于将文件从一个路径复制到另一个路径。我希望在我的应用程序(app.efi)源代码中以编程方式这样做。
编辑:我正在寻找类似于 function in Linux的东西。
如何做到这一点?
发布于 2018-10-17 19:12:54
可以使用EFI_SHELL_PROTOCOL的EFI_SHELL_PROTOCOL函数从UEFI应用程序调用UEFI命令,该函数在MdePkg/Include/Protocol/Shell.h下定义。
您需要在UEFI应用程序的inf文件中包含协议GUID:
[Protocols]
gEfiShellProtocolGuid ## CONSUMES然后,您可以调用一个shell命令,如下例所示:
EFI_STATUS
EFIAPI
UefiMain (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_SHELL_PROTOCOL *EfiShellProtocol;
EFI_STATUS Status;
Status = gBS->LocateProtocol (&gEfiShellProtocolGuid,
NULL,
(VOID **) &EfiShellProtocol);
if (EFI_ERROR (Status)) {
return Status;
}
EfiShellProtocol->Execute (&ImageHandle,
L"echo Hello World!",
NULL,
&Status);
return Status;
}编辑:使用ShellLib库类有一种更简单(也可能更正确)的方法:
#include <Library/ShellLib.h>
EFI_STATUS
EFIAPI
UefiMain (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
ShellExecute (&ImageHandle,
L"echo Hello World!",
FALSE,
NULL,
&Status);
return Status;
}https://stackoverflow.com/questions/38738862
复制相似问题