gpt4 book ai didi

c - 如何在 efi shell 中使用 "argc"?

转载 作者:行者123 更新时间:2023-11-30 16:48:05 25 4
gpt4 key购买 nike

目前我正在使用 efi API 进行编程。

如何在 efi 编程中使用?我想知道如何在efi中编写argv和argc。

到目前为止编写的c代码:

#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]);
}

最佳答案

argcargvmain 是标准库概念,不会直接转换为 UEFI 应用程序。

一般而言:

  • UEFI 应用程序仅使用 UEFI 接口(interface)
  • UEFI Shell 应用程序还可以依赖 UEFI Shell 提供的接口(interface)(但无法在 shell 外正确运行)

无论哪种情况,当应用程序启动时,其入口点都只会传递一个指向 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 规范中找到这些协议(protocol)的详细信息,from the UEFI Forum website .

当然,像 gnu-efi(也许还有 VisualUefi)这样的抽象框架可能会隐藏底层机制,或者提供获取它们的替代方法。`

关于c - 如何在 efi shell 中使用 "argc"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43114662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com