UEFI开发学习16 – 为UEFI固件加一个截图功能

前言

固件下的截图虽然大多时候用不到,但有时候要根据Setup制作文档什么的就可以派上用场了。当然这里不考虑这些原因,主要是学习一下怎么添加一个截图的功能。

实现要点

1、 固件下包括Shell界面和Setup界面,要实现截图,那就得用UEFI Driver了。

2、要在Driver中注册一个按键,用于触发程序。

3、截图的原理是利用Blt函数中的EfiBltVideoToBltBuffer参数,将当前屏幕保存缓冲区,然后再将缓冲区的数据按格式保持即可。

程序

Github上有开源的代码,我就不重复造轮子了。

地址:https://github.com/fpmurphy/UEFI-Utilities-2019/tree/master/MyApps/ScreenshotDriver

这个源码还是有点问题,保存图片的时候路径没处理好,导致会卡死;图片保存失败的时候提示也不正确,这俩问题我都修复了,现在默认保存到第一个USB 存储设备的分区上。

源码及efi文件已经传至Gitee:https://gitee.com/ay123net/uefistudy.git

使用

在不编译到固件的情况下:

1、在shell下,可用load命令加载,如下:

load ScreenshotDriver.efi

2、按 ctrl + alt + f12 截图,屏幕四周会闪烁两次,第二次闪烁,绿色表示成功,红色表示失败。

此时,如果固件支持,可用exit命令退出shell进入Setup界面,依然可以截图,重启会失效,需要重新load一次

编译到固件

参考:https://ay123.net/mystudy/835/

注意一定要插U盘,且分区格式是fat32

版权声明:
作者:bin
链接:https://ay123.net/mystudy/uefi/1159/
来源:爱影博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>