leerom
驱动小牛
驱动小牛
  • 注册日期2001-06-08
  • 最后登录2010-08-31
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
20楼#
发布于:2002-11-24 09:46
如果你只是对特定的显卡驱动开发的话,那么恭喜你,你只要实现原显示驱动中提供的几个DDI函数就行了。但如果你开发的是一个通用驱动,那么你应该实现所有的和显示有关的DDI函数。在系统加载你的驱动的时候,你的驱动首先要查找并加载原有的驱动程序,同时纪录下原驱动程序的所有DDI函数的入口。你的驱动程序应该类似Mirror Driver使用系统内存作为frame buffer,系统你的驱动进行调用时你先要在你的frame buffer上完成相应的绘图,在调用原来的驱动程序。

[编辑 -  11/24/02 by  leerom]
leerom
bigbox
驱动牛犊
驱动牛犊
  • 注册日期2002-02-06
  • 最后登录2003-03-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
21楼#
发布于:2002-11-25 10:11
To:leerom
    你说得太对了,就是写一个miniport,然后一个mirror display driver.怎麽样?有兴趣接下来吗?
leerom
驱动小牛
驱动小牛
  • 注册日期2001-06-08
  • 最后登录2010-08-31
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
22楼#
发布于:2002-11-25 10:47
如果只是GDI的Mirror Driver,我立即可以答应你。但是你的要求主要是DirectX,我没有的把握,所以才提出前期研究。原理虽然可以说出来,但是实现起来还是有很大的难度。DirectX和GDI不同,在GDI驱动中我可以调用那些Eng开头的系统函数来实现在系统内存上的绘图,而在DirectX中恐怕都要自己来。
leerom
bigbox
驱动牛犊
驱动牛犊
  • 注册日期2002-02-06
  • 最后登录2003-03-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
23楼#
发布于:2002-11-25 12:59
To:leerom
怎麽会,你想想,只要调用原驱动程序的DDI就好了呀!
bigbox
驱动牛犊
驱动牛犊
  • 注册日期2002-02-06
  • 最后登录2003-03-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
24楼#
发布于:2002-11-25 13:04
To:leerom
不会呀,你想想,只要调用原驱动的程序的DirectX DDI就可以了呀,在mirror driver上怎么绘图不管它,活着不画,只要拿到屏幕变化,然后通知上层程序就行了。

我所担心的是通用的miniport driver,这方面有什么思路吗?
leerom
驱动小牛
驱动小牛
  • 注册日期2001-06-08
  • 最后登录2010-08-31
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
25楼#
发布于:2002-11-25 13:57
要在Mirror Driver实现图像的重复绘制的原因如下:
1、DDI函数的入口参数大多数都是系统使用的内部对象。我们不知道它的结构和大小。比如clipobj
2、我们不知道驱动程序怎样分配和使用显存的。比如对鼠标,显卡驱动通常会在显存的最高端分配一个缓冲区保存鼠标形状,在输出图像时在将桌面和鼠标叠加输出。这样可以避免在,收到鼠标移动的系统调用时对鼠标原先所在的位置的显存重新刷新。
对于miniport我想应该是写一个过滤驱动。
leerom
jansen
驱动小牛
驱动小牛
  • 注册日期2001-10-21
  • 最后登录2007-10-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
26楼#
发布于:2002-11-25 18:57
To leerom:
可以问一下??
你作哪方面的显卡驱动呀?
rich
leerom
驱动小牛
驱动小牛
  • 注册日期2001-06-08
  • 最后登录2010-08-31
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
27楼#
发布于:2002-11-26 18:55
s3
leerom
zhbzhou
驱动牛犊
驱动牛犊
  • 注册日期2001-06-27
  • 最后登录2005-02-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
28楼#
发布于:2002-11-27 09:39
mirror miniport和mirror display driver在DDK中就有例子,
根本不需要做,他的通用性也不是问题,微软的netmeeting
中的截屏就是用的这个例子,效率相当好,但是他也抓不了
视频中的overlay,现在采用的是把视频加速关掉来抓图象。
确实这样可以抓到,但是关掉视频加速的图象效果没有原来的
好。有谁知道现在能做到抓视频加速的软件啊,方便的话给个
地址,thanks!

leerom
驱动小牛
驱动小牛
  • 注册日期2001-06-08
  • 最后登录2010-08-31
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
29楼#
发布于:2002-11-27 18:53
to zhbzhou:
你可能没留意前面的对话。我已经说过mirror driver不能截取directX调用,所以我才说要另外写一个display驱动包在原驱动外面,实现类似mirror driver的功能,这样就能捕获所对显示驱动的调用。

to bigbox:
miniport driver可以不写,还用原来的。在你的display driver中用EngloadImage来加载原来的display driver。然后用EngFindImageProcAddress得到原来驱动的函数入口(不过你要知道函数名,头痛!)
leerom
jansen
驱动小牛
驱动小牛
  • 注册日期2001-10-21
  • 最后登录2007-10-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
30楼#
发布于:2002-11-27 19:09
To leerom:
原来是高手呀,ddk里面的sample code 就有s3的。似乎你对graphic DDI特别精通呀!有时间希望用email联系!顺便请教一下EngLoadImage()应该在哪里调用呢,什么时候调用?
rich
zhbzhou
驱动牛犊
驱动牛犊
  • 注册日期2001-06-27
  • 最后登录2005-02-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
31楼#
发布于:2002-11-28 09:35
to leetom:
可能我没留意前面的对话,但是即使写一个display驱动包在原驱动外面,也不能抓到overlay的图象啊!DirectX到是可以抓到的,这个我试
过了,你知道怎么抓overlay的图象吗???

leerom
驱动小牛
驱动小牛
  • 注册日期2001-06-08
  • 最后登录2010-08-31
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
32楼#
发布于:2002-11-28 11:11
to jansen:
我的想法是:在DrvEanbleDriver中调用EngLoadImage()加载原来的驱动程序,然后再用EngFindImageProcAddress()得到原来驱动的DrvEanbleDriver函数地址(DrvEnableDriver为每个display driver的入口地址,我头痛的问题解决了)。再通过对原来驱动的DrvEnableDriver进行调用,即可得到原驱动提供的DDI函数入口表。

to zhbzhou:
不能捕获overlay的确是这种方法的弱点。因为我们不知道视频图像究竟被放在显存的什么位置。应用通常是通过DrvEscape接口将显示的参数直接传入,比如显示视频图像的窗口句柄或信号制式。再输出时再把视频图像和桌面进行叠加输出。对这种视频图像我个人认为是没法捕捉的,除非你有原来display driver的源码。

[编辑 -  11/28/02 by  leerom]
leerom
zhbzhou
驱动牛犊
驱动牛犊
  • 注册日期2001-06-27
  • 最后登录2005-02-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
33楼#
发布于:2002-11-28 14:01
to leerom!
非常同意你对overlay的观点,现在我还没有看到能够抓overlay
的软件, 不知道有没有人看过!



上一页 下一页
游客

返回顶部