目标
通过控制台传入的参数为:
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错误添加未定义类型;