对于显示器的信息检测,要求它必须支持vbe(VESA的BIOS级扩展)。在显示器支持此扩展时,通过系统实模式下的BIOS调用
INT 10H,可以取得显示器的详细信息。
可能需要的BIOS子功能调用为:
AH = 0x4F00
获得关于监视器的VESA的BIOS级扩展信息
AH = 0x4F01
获得监视器支持的特定显示模式
AH = 0x4F02
设置当前的视频模式
AH = 0x4F03
获得当前的视频模式
AH = 0x4F04
保存/还原svga显示方式
AH = 0x4F15
获得监视器的EDID扩展信息
在kernel源码中可以找到一些汇编代码,比如arch/i386/boot/video.S下:
# get video mem size
leaw modelist+1024, %di
movw $0x4f00, %ax
int $0x10
xorl %eax, %eax
movw 18(%di), %ax
movl %eax, %fs:(PARAM_LFB_SIZE)
你可以查看vbe相关文档。
你也可以用C语言实现。
或者查看frambuffer相关代码。
本文介绍如何通过VBE BIOS扩展来获取显示器信息的方法。利用INT 10H调用的不同功能码,如0x4F00获得VESA BIOS扩展信息、0x4F01获取支持的显示模式等,可以读取显示器的详细配置。文中还提供了内核源码中的具体实例。
167

被折叠的 条评论
为什么被折叠?



