能力值:
( LV2,RANK:10 )
|
-
-
2 楼
32位操作系统是图形界面的操作系统,使用图形设备接口(GDI),负责在视频显示器上显示图形。包括用户的输入显示,和系统本身也使用它来显示。
主要由GDI32.DLL动态链接库输出的函数来处理。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
0XB8000H,呵呵,竟然还有人记得直接写屏技术……
在windows下是不能这么做的,因为所有的内存都处于保护状态,中断向量表、显示内存等在DOS时代随便玩的东西,在Windows下你都是摸不到的。
这样的好处很明显,硬件无关性。开发软件的人不必再关心用户显卡的牌子或支持哪些分辨率(在DOS时代搞图形界面的话这些都是要知道的),GUI和DirectX已经帮你包办掉了一切,你所要做的,只是对API函数操作就行了。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
这样做有利也有弊啊,有利方面是大大缩短了程序开发的周期,弊的方面是从此程序员就不了解程序底层的运作机理了,除非是自学相关方面的知识。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
个人觉得是利大于弊
就拿楼主所说的DOS下的直接写屏来说吧,0XB8000H是有条件的,如果你是彩色显卡,并工作在25行X80列的显示模式下,才是0XB8000H这个地址,而VGA支持的显示模式,远不止这一种,那程序员必须了解每一种模式下的写屏起始地址,如果用户的显卡是黑白的,又是另一个地址了。
以上说的还只是文字模式,在图形模式下,大家的显卡、分辨率千差万别,让程序员了解这些?杀了他吧!
所谓术业有专攻,这是技术进步后必然的结果,让了解硬件的人写驱动,程序员只要知道API函数就够了。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
是的,封装起来安全性就好多了~~~
我也不去直接写显存,只是想了解一下windows的在显示方面的原始机制与原理
至少,操作系统是自己去写显存的.....
那请问大家,抛开gdi这样的抽象概念,从底层来说,操作系统是怎么样进行这样一个过程呢?
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
从底层来说,操作系统把字体以点阵方式排布,转化为像素显示在显示器上。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
抛开gdi这样的抽象概念,从底层来说,操作系统是怎么样进行这样一个过程呢?
操作系统管不了这么底层的事,最多管到点阵,然后交给显卡驱动,显卡驱动操作显卡,编辑显存
这个机制很复杂,不用多管,也管不了。
在DOS下,哪怕是简单地在屏幕上显示一个字母,对应的底层代码就要几十页。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
从硬件上理解,cpu和显卡通信也是要寻址的,这些“工作”我们反汇编后都应该能看到啊!
那显卡的地址是多少?找到这个地址,也就能进一步理解反编译的程序了
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
这部分工作是交给显卡驱动的,不同的驱动会有不同的做法,N卡和A卡的机制也不同,没有标准答案
|
能力值:
( LV5,RANK:70 )
|
-
-
11 楼
XP为了它的安全、稳定性,把这些内存地址给改了(它并不希望你找到并修改,这样很容易出错)。
如果你想显示什么在桌面,看看下面的代码(C/C++):
int main()
{
char Text[] = "这样就能在屏幕上显示文字啦^_^";
HWND Desk = GetDesktopWindow();
HDC DeskDC = GetWindowDC(Desk);
while(true)
{
TextOutA(DeskDC, 0, 0, Text, sizeof(Text));
Sleep(1000);
}
return 0;
}
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
[QUOTE=weizehua;940847]XP为了它的安全、稳定性,把这些内存地址给改了(它并不希望你找到并修改,这样很容易出错)。
如果你想显示什么在桌面,看看下面的代码(C/C++):
int main()
{
char Text[] = "这样就能在屏幕上显示文字啦^_^";
HWND Desk = GetDe...[/QUOTE]
对于windows的这种做法,我想大家都是不乐意的。
有没有人能把地址找出来?
如果能把MS这套思路摸透,加之图像处理与理解技术,我想,一个新的时代即将来临!
|
能力值:
( LV5,RANK:60 )
|
-
-
13 楼
我觉得哈其实现与dos的底层实现也相差无几,只是dos的要我们去做,而在windows中我们不用去管他,交给操作系统来做的!比如你别看那些任务调度多高级,最后还是用中断来实现的!所以再复杂的底层也是相同的原理吧!
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
是的,只要我们了解这个基本原理,就能掌控整个过程
|
|
|