如何获取视频输出的首选分辨率?(BIOS引导加载程序)

编程语言 2026-07-10

我正在为x86_64指令集体系结构构建一个操作系统。我现在已经到了开发阶段,希望开始以图形方式向用户显示内容,因此想获取显示器/视频输出的原生分辨率,而不是预设的BIOS视频模式。我知道这可以通过VESA VBE和 EDID功能实现,但文档——尤其是后者——并不丰富。

我应该如何着手寻找首选的视频模式?我是不是在完全错误的方向寻求答案?

解决方案

与其试图理解EDID信息,不如简单地枚举VBE提供的视频模式。
然后选择像素分辨率最大的那个。

VBE函数00h在 VbeInfoBloc中返回一个指向可用模式列表的VideoModePtr。该列表以 -1结束。
对每个模式,你再使用VBE函数01h来检索ModeInfoBloc。这里你会找到xResolution和 yResolution。它们的乘积可以帮助你决定选择哪种视频模式。不过也别忘了查看其他信息!比如颜色分辨率、线性帧缓冲区……

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章