2016-08-16 6 views
1

Ich habe versucht, etwas auf dem Bildschirm mit UEFI anzuzeigen.EFI_GRAPHICS_OUTPUT_PROTOCOL Blt macht nichts

Fast PC, der UEFI mit Framebuffer gut gezeichnet hatte. Aber ein PC hatte ältere UEFI und ich hatte mit Blt Funktion in EFI_GRAPHICS_OUTPUT_PROTOCOL zu ziehen. (Wahrscheinlich, weil das IGP PC kein UEFI-Modul hatte ..)

Aber immer, wenn ich es versuchen, es nicht alles tun. Ich habe dasselbe in VMware versucht, aber es funktioniert auch nicht.

Das habe ich ausprobiert.

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); 

HINWEIS: Prot Instanz EFI_GRAPHICS_OUTPUT_PROTOCOL.

Ich googelte und ich konnte kein Problem mit Argumenten finden, und ich überprüfte Statusvariable und es sagte EFI_SUCCESS.

Das Ding zieht rote Pixel auf den gesamten Bildschirm, richtig? Aber es hat nichts auf dem Bildschirm gezeichnet.

Ich habe dies versucht, nachdem etwas auf Framebuffer gezeichnet wurde. (Und natürlich lief es ziemlich gut auf VMware) Aber ich konnte keine Änderung auf dem Bildschirm sehen. Nicht einmal ein schwarzer Bildschirm oder etwas anderes. Was ich sehen konnte, war, was ich mit Framebuffer gezeichnet hatte.

Mache ich etwas falsch?

Natürlich habe ich ExitBootServices() noch nicht verwendet.

Antwort

0

Versuchen Sie getting all protocol handles, nicht nur eine, weil einige Systeme mehrere Instanzen von GOP haben, und die erste kann ein schwarzer Bildschirm (zweiter Monitor, der jetzt nicht verbunden ist, usw.) Sie versuchen zu schreiben.