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