目前我正在使用efi API进行编程。
如何在efi编程中使用? 我想知道如何在efi中编写argv和argc。
到目前为止编写的代码:#include <stdio.h>
int main(int argc,char *argv[])
{
int i;
printf("Program name is %s \n",argv[0]);
if (argc <2)
printf("argument is no exist \n");
else
for (i=0;i<argc;i++)
printf ("argv[%d] = %s \n",i,argv[i]);
}
答案 0 :(得分:0)
argc
,argv
和main
是标准库概念,不直接转换为UEFI应用程序。
在通用级别:
在任何一种情况下,当应用程序启动时,其入口点将仅传递指向UEFI系统表和图像句柄的指针,提供有关如何调用当前图像的信息的链接
纯UEFI应用程序在其图像句柄上只安装了EFI_LOADED_IMAGE_PROTOCOL
。 UEFI Shell应用程序也具有EFI_SHELL_PARAMETERS_PROTOCOL
。
EFI_SHELL_PARAMETERS_PROTOCOL
使您可以访问argc / argv构造。如果没有这个,你需要手动解析EFI_LOADED_IMAGE_PROTOCOL.LoadOptions
。
您可以在 UEFI规范和 UEFI Shell规范中找到这些协议的详细信息,from the UEFI Forum website。
当然,像gnu-efi(以及VisualUefi)这样的抽象框架可能隐藏了潜在的机制,或提供了替代它们的替代方法。