2016-08-16 326 views
1

我试图使用UEFI在屏幕上显示某些内容。EFI_GRAPHICS_OUTPUT_PROTOCOL Blt不会执行任何操作

几乎所有有UEFI的PC都可以很好的使用framebuffer。 但一台电脑有旧的UEFI和我在EFI_GRAPHICS_OUTPUT_PROTOCOL使用BLT函数画。(可能是因为PC的IGP没有UEFI模块..)

但每当我尝试它,它不会做任何事情。 我在VMware中尝试过同样的事情,但它也不起作用。

这是我试过的。

EFI_GRAPHICS_OUTPUT_BLT_PIXEL p; 
p.Red = 255; 
p.Green = 0; 
p.Blue = 0; 
EFI_STATUS status = prot->Blt(prot, &p, EfiBltVideoFill, 0, 0, 0, 0, width, height, 0); 

注意:prot是EFI_GRAPHICS_OUTPUT_PROTOCOL的实例。

我GOOGLE了,我无法找到任何与参数的问题,我检查了状态变量,它说EFI_SUCCESS。

那东西在整个屏幕上绘制红色像素,对吧? 但它没有在屏幕上绘制任何东西。

我在framebuffer上画了一些东西后尝试了这个(当然,它在VMware上运行得非常好) 但我在屏幕上看不到任何改变。甚至没有黑屏或其他东西。我能看到的是我用framebuffer绘制的东西。

我做错了什么?

当然,我还没有使用ExitBootServices()。

回答

0

尝试getting all protocol handles,不只是一个,因为有些系统有多个GOP实例,第一个可能是您试图写入的黑屏(第二个未连接的显示器等)。

相关问题