UEFI shell控制台向.efi文件传入参数--通过protocol实现

目标

过控制台传入的参数为:

        Argc,传入参数的个数;

        Argv,存放参数字符串的字符指针数组。各参数保存为字符串,数组元素为字符串指针;

  /// Parsed arg list converted more C-like format.
  ///
  CHAR16                    **Argv;
  UINTN                     Argc;

实现

UEFI shell中向.efi中传入参数,需要EfiShellInterface相关protocol--gEfiShellInterfaceGuid,及EFI_SHELL_INTERFACE;

        Protocol使用之前进行LocateProtocol / OpenProtocol 操作(BootServices),Status = EFI_SUCCESS表示相关protocol已install且可以使用。推荐使用OpenProtocol,传入ImageHandle,其他传入的参数参考source。LocateProtocol可能会失败。这与protocol在handle上的挂载规则有关,不展开讲。

         ImageHandle,Dxe_module传入参数。

         Guid:见source code。

      Argc,Argv包含在EFI_SHELL_INTERFACE结构体中;结构体及成员定义见Bios sourcecode,将定义所在头文件#include(Project中有对应头文件 ) 或将相关类型定义从其他Bios sourcecode复制过来(未包含类型定义所在头文件)。

P.s. 成员类型定义要在EFI_SHELL_INTERFACE结构定义之前;

        根据Build错误添加未定义类型;

  

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值