当前位置: 首页 > news >正文

UEFI EDK2框架学习 (四)——UEFI图形化

一、修改protocol.c

#include <Uefi.h>
#include <Library/UefiLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <stdio.h>EFI_STATUS
EFIAPI
UefiMain(IN EFI_HANDLE ImageHandle,IN EFI_SYSTEM_TABLE *SystemTable
) {EFI_STATUS Status = EFI_SUCCESS;UINTN NoHandles = 0;EFI_HANDLE *Buffer = NULL;Status = gBS->LocateHandleBuffer(ByProtocol,&gEfiGraphicsOutputProtocolGuid,NULL,&NoHandles,&Buffer);Print(L"Status = %d", Status);if (EFI_ERROR(Status)) {Print(L"Failed to LocateHandleBuffer. \n");return Status;}Print(L"Hello, Protocol\n");EFI_GRAPHICS_OUTPUT_PROTOCOL *Gop;Status = gBS->OpenProtocol(Buffer[0],&gEfiGraphicsOutputProtocolGuid,(VOID**)&Gop,ImageHandle,NULL,EFI_OPEN_PROTOCOL_GET_PROTOCOL);Print(L"Status = %d", Status);if (EFI_ERROR(Status)) {Print(L"Failed to OpenProtocol. \n");return Status;}UINTN SizeOfInfo = 0;EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info;UINTN i = 0;for (; i < Gop->Mode->MaxMode; i++) {Status = Gop->QueryMode(Gop, i, &SizeOfInfo, &Info);if (EFI_ERROR(Status)) {Print(L"Failed to Querymode. \n");return Status;}PrintL(L"Mode %d, H = %d, V = %d", i, Info->HorizontalResolution, Info->VerticalResolution);}Status = Gop->SetMode(Gop, 22);if (EFI_ERROR(Status)) {Print(L"Failed to Querymode. \n");return Status;}EFI_GRAPHICS_OUTPUT_BLT_PIXEL Red = {0, 0, 255, 0};Gop->Blt(Gop,&Red,EfiBltVideoFill,0,0,   // source x y0,0,100,100,  // wid  height0);if (EFI_ERROR(Status)) {Print(L"Failed to Blt. \n");return Status;}Gop->Blt(Gop,&Red,EfiBltVideoFill,0,0,   // source x y200, 200,100,100,  // wid  height0);  // copyif (EFI_ERROR(Status)) {Print(L"Failed to Blt. \n");return Status;}return Status;
}

二、build

http://www.lryc.cn/news/466264.html

相关文章:

  • 【C++】— 一篇文章让你认识STL
  • mysql--索引
  • 【linux】线程 (三)
  • c++日常积累
  • 字节流写入文件
  • Torch模型导入
  • 博弈论:博弈类型空间集合;三层博弈拓展式;
  • 数据库表的关联、集合操作
  • word怎么清除格式,Word一键清除所有格式教程
  • ShardingProxy服务端分库分表
  • 开源的 FOC(Field-Oriented Control) 项目
  • 高等数学 5.5 反常积分的审敛法 Γ函数
  • 宝塔安装ffmpeg的方法
  • 案例分享-优秀蓝色系UI界面赏析
  • 陪诊小程序之uniapp(从入门到精通)
  • 深度学习(一)基础:神经网络、训练过程与激活函数(1/10)
  • 源代码加密技术的一大新方向!
  • SVN——常见问题
  • JavaCV 图像灰度化处理
  • 基于Multisim三极管B放大系数放大倍数测量电路设计(含仿真和报告)
  • Molmo模型实战
  • 免费开源的微信开发框架
  • 波形的变化和信号的产生1+multisim仿真
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(3)
  • 电脑微信多开方法,保姆级教学,超简单!
  • 【Mysql】-锁,行级锁
  • 手机功耗技术领域
  • Golang | Leetcode Golang题解之第493题翻转对
  • linux笔记(yum本地源仓库搭建)
  • K8S系列-Kubernetes网络