我是UEFI应用程序开发的新手。
我的要求是,
我需要从我的UEFI应用程序(app.efi
)源代码运行UEFI shell命令。
需要有关如何做到这一点的指导。
实施例,
UEFI shell中的编辑:我正在寻找与
cp
命令用于将文件从一个路径复制到 另一个。我想在我的应用程序中以编程方式执行此操作 (app.efi
)源代码。
system("command");
function in Linux类似的东西。
如何实现这一目标?
答案 0 :(得分:3)
可以使用EFI_SHELL_EXECUTE
下定义的EFI_SHELL_PROTOCOL
的{{1}}函数来从UEFI应用程序调用UEFI Shell命令。
您需要在UEFI应用程序的inf文件中包含协议GUID:
MdePkg/Include/Protocol/Shell.h
然后,您可以像以下示例中一样调用shell命令:
[Protocols]
gEfiShellProtocolGuid ## CONSUMES
编辑:使用ShellLib库类有一种更简单(可能更正确)的方法:
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;
}
答案 1 :(得分:-2)
您是在寻找内置的东西,还是可以使用nshell?它是一个单独的应用程序,但它可以为您执行副本。 https://software.intel.com/en-us/articles/uefi-shell请注意,命令语法与bash不同。