EFI_GRAPHICS_OUTPUT_PROTOCOL Blt什么都不做

时间:2016-08-16 16:03:22

标签: uefi

我试图使用UEFI在屏幕上显示某些内容。

几乎拥有UEFI的PC与framebuffer相得益彰。 但是一台PC有较旧的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()。

1 个答案:

答案 0 :(得分:0)

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