首页 > 系统相关 >UEFI代码中执行UEFI shell命令

UEFI代码中执行UEFI shell命令

时间:2023-12-07 19:24:08浏览次数:26  
标签:Status shell 代码 EFI UEFI include gBS

在UEFI代码中执行UEFI shell命令,类似于linux下C代码执行system("command")系统调用。

MyUefiShell.inf内容如下:

[Defines]                                                                          
 INF_VERSION = 1.25                                                                
 BASE_NAME = MyUefiShell                                                              
 FILE_GUID = 6987936E-ED34-44db-AE97-1FA5E4ED2116                                  
 MODULE_TYPE = UEFI_APPLICATION                                                    
 VERSION_STRING = 1.0                                                              
 ENTRY_POINT = UefiEntry                                                           
                                                                                   
[Sources]                                                                          
 UefiMain.c                                                                        
                                                                                   
[Packages]                                                                         
 MdePkg/MdePkg.dec                                                                 
                                                                                   
[LibraryClasses]                                                                   
 UefiApplicationEntryPoint                                                         
 UefiLib                                                                           
                                                                                   
[Guids]                                                                            
                                                                                   
[Ppis]                                                                             
                                                                                   
[Protocols]                                                                        
 gEfiShellProtocolGuid                                                             
                                                                                   
[FeaturePcd]                                                                       
                                                                                   
[Pcd] 

 

MyUefiShell.c内容如下, 代码中执行UEFI shell的map命令:

#include <Uefi.h>                                                                  
#include <Library/UefiLib.h>                                                       
#include <Library/UefiBootServicesTableLib.h>                                      
#include <Protocol/Shell.h>                                                        
                                                                                                                                
                                                                               
EFI_STATUS EFIAPI UefiEntry(IN EFI_HANDLE imgHandle, IN EFI_SYSTEM_TABLE *sysTable)
{                                                                                  
    EFI_SHELL_PROTOCOL    *EfiShellProtocol;                                       
    EFI_STATUS            Status;                                                  
    gBS = sysTable->BootServices;                                                  
                                                                                   
    gBS->SetWatchdogTimer(0, 0, 0, NULL);                                          
    Print(L"Execute UEFI shell command!\r\n");                                
    Status = gBS->LocateProtocol(&gEfiShellProtocolGuid,                           
                                NULL,                                              
                                (VOID **)&EfiShellProtocol);                       
    if (EFI_ERROR (Status)) {                                                   
        return Status;                                                          
    }                                                                           
                                                                                
    EfiShellProtocol->Execute(&imgHandle,                                       
                            L"map",                                            
                            NULL,                                               
                            &Status);                                           
                                                             
    return Status;                                                              
}                            

如何搭建EDK2开发环境和新建项目,以及编译UEFI程序,请参考:ubuntu20.04下搭建EDK2开发环境 。

 

标签:Status,shell,代码,EFI,UEFI,include,gBS
From: https://www.cnblogs.com/wanglouxiaozi/p/17883748.html

相关文章

  • 拉取镜像代码
    #检测是否含有yq命令echo-e"正在将内容输出至$Images_File文件中,请稍等..."#获取Harbor中所有的项目(Projects)Project_List=$(curl-u${Harbor_User}:${Harbor_Passwd}-H"Content-Type:application/json"-XGET"${Harbor_Schema}://${Harbor_Address}/api/v2.0/......
  • 国内零代码链接器有哪些?
    什么是零代码链接器?零代码链接器,也是属于零代码集成领域,代表一种可以通过不编写代码就能让不同系统产生数据互通的技术,主要通过授权API接口暴露数据,让不同系统间的数据可以在内部互相调用,实现自动化的连接。零代码集成的出现,有效提升了企业内部系统的数据整合效率,同时大大降低了......
  • [代码之美] 简洁代码风格终极指南
    什么是“干净的代码”?原文地址(英文)什么是“干净的代码“可读优雅易于理解,符合单一职责原则易于理解,易于修改,易于维护按照测试策略进行测试写“干净的代码”的重要性解决问题更容易团队中思路的交流更清晰不需要过多的维护TheBestTipstoFollow1.使用描述性......
  • 代码随想训练营第58天(Python)| 739. 每日温度、496.下一个更大元素 I
    739.每日温度classSolution:defdailyTemperatures(self,temperatures:List[int])->List[int]:n=len(temperatures)ans=[0]*n#单调增的栈stack=[]foriinrange(n):#如果遍历的temperatures[i]......
  • codegeex 程序员代码工具
    一、codegeex简介CodeGeeX是清华和智谱AI联合打造的多语言代码生成模型。官网地址:https://codegeex.cn/二、安装方法1、支持IDE如下:vscode、GoLand、IntelliJIDEA等2、支持语言如下:python、C++、Go、Java等3、以vscode为例,只需安装插件即可三、功能1、AskCodeGee......
  • Linux编写Shell脚本获取指定目录下所有文件并处理
    Linux编写Shell脚本获取指定目录下所有文件进行处理并保存到新目录#!/bin/bashapp_name="shell"path="/dir"#原目录last_path="/newDir"#新目录echo"======================start${app_name}=============================="if[-n"$(ls$path......
  • 反弹Shell的各种姿势-Linux
    反弹Shell-Linux监听方式nc-lnvp7777【监听端】centos:192.168.35.152【被控端】kali:192.168.35.128#监听端执行[root@localhost~]#nc-vvl7777 #Ncat:Version7.50(https://nmap.org/ncat)Ncat:Listeningon:::7777Ncat:Listeningon0.0.0.0:777......
  • 《代码阅读方法与实践》读后感
     在《代码阅读方法与实践》一书中,作者系统地介绍了一系列方法和实践,帮助读者更加高效、深入地阅读代码。这本书不仅仅是一本关于技术的书籍,更是一本引导读者形成正确的代码阅读思维方式的指南。首先,书中提到了代码阅读的重要性。在软件开发领域,写代码只是一个环节,而理解、维护......
  • IIS 漏洞Http.sys 远程代码执行
     漏洞描述弱点描述:在微软4月14日补丁日发布的补丁中,有一个针对IIS服务器的远程代码执行漏洞危害非常大,安恒信息提醒广大用户注意。漏洞信息远程执行代码漏洞存在于HTTP协议堆栈(HTTP.sys)中,当HTTP.sys未正确分析经特殊设计的HTTP请求时会导致此漏洞。成......
  • 从master拉取代码,新建分支,将新建分支推送到远程
    例如master分支为https://xxx.git克隆master分支gitclonehttps://xxx.git进入项目,查看项目所在的分支gitbranch-a 本地新建分支ex-qiuxie058,将远程master的代码同步到ex-qiuxie058gitcheckout-bex-qiuxie058origin/master查看操作后的......