目前在我的机器上是能改变刷新率了,接着要多找几台显示器试一下。神啊,保佑我不要烧掉它们吧,呵呵。
得到DDC信息(就是EDID吧,我不是太清楚)的方法:AX=0x4f15BX=0x1INT 10一般是得到128字节的信息,然后就按照EDID规范去分析吧,好像挺复杂的,就像二进制文件的解码一样。关键的是第七部分:Detailed Timing Section(72Bytes,36h-7Dh)另外一个是第四部分:Basic Display Parameters(5Bytes,14h-18h)。我对标准文档的该部分描述存有疑问,它和第五部分之间有十个字节的空缺,不知道为什么。
另外文献里提到EDID的地址:0xA0很多次了,希望高手解释下它的用法。
从目前的试验结果来看,问题出在INTEL的显示芯片的驱动上。就是INTEL系列的部分显卡(从815到865)驱动,并没有按照默认的标准开发。1.显存页大小可能不是64K而是16K,从而造成图像完全变花2.默认的图形模式下刷新频率过高或者过低,导致显示器自动黑屏保护。
对于这两个问题,你可以认为是INTEL没有按照默认的标准去做;而实际上,是编程人员对VESA标准研究的不够。比如说,想当然的认为显存页大小是64K(当然多数显卡是64K啦),而实际上应该去读INT 10中断的返回信息,确定显存页面的大小。这个应该就是你碰到的问题所在。至于黑屏的问题,前面已经讨论过了,是对于EDID和显示器DDC的VESA标准研究不够的问题。
顶....还要多努力。。