阅读:1936回复:13
请教一个 display driver 的问题
就是 microsoft 的 dcm 管理 建好 driver chain 之后
我的驱动 如何调用 next chain呢? 也就是 我如何把 数据 传给 下一级 驱动呢?是 gdi调度的吗? 可是 我把我的显示 驱动 加入 driverchain 之后 怎么 不行呢? 谢谢 |
|
沙发#
发布于:2004-09-07 16:48
我用土办法:EngLoadImage。
把自己的显示驱动启动后,直接用EngLoadImage加载其他驱动程序。 |
|
|
板凳#
发布于:2004-09-07 17:30
就是 microsoft 的 dcm 管理 建好 driver chain 之后 你确保chain正确吗? 不仅在app中需要正确安装,而且在ddi中需要调用dcmkrnl的相应函数 |
|
|
地板#
发布于:2004-09-07 17:39
我用土办法:EngLoadImage。 不做其他操作吗? 如果不做其他操作恐怕有问题哦,比如你的系统安装了"TNT2"的显卡,如果正常情况下。 比如对mirro方式来说,在你的驱动加栽前,TNT2的驱动(.sys)已经run了,然后在加ddi时候,TNT2的驱动需要他对应的ddi,然后才是你自己的ddi被加载。 如果你只是简单的先加栽自己的ddi,然后使用EngLoadImage这样恐怕有很多问题,当然使用EngLoadImage(或具有该功能的其他方式)应该说是必须的,但这并不是问题的关键吧。 |
|
|
地下室#
发布于:2004-09-07 18:15
我是这样考虑的:
1、写一个安装程序。 2、该程序运行时搜寻注册表的显示驱动项,找出当前使用的显示驱动。 3、将注册表中的Display Driver改成我的驱动。 4、重启后应该先加载我的驱动,这时我再加载原来的显卡驱动。 5、然后.... 6、缺点:重新安装显卡驱动之后也要重装我的驱动:-< 可行否?我也没试过,纯属纸上谈兵,欢迎大家拍砖。 |
|
|
5楼#
发布于:2004-09-07 19:03
对display driver应该可行。
|
|
6楼#
发布于:2004-09-07 21:52
光 EngLoadImage(……) 能行?
如果 这样做的话 ,是不是 我还得 Hook 住 DrvEnableDriver 函数也取得 DrvXXX函数的 map 表啊,在我的 同名 函数里调用! 不是 这样的话 ,gdi 又怎么能知道 该 map表呢?EngLoadImage时 gdi 肯定是无法取得 的呀! 还有 AllenZh 大哥 ,你 dasm 过 jawsid 吗? 他是怎么做的呢? 我晕死,看得太慢,怎么 jawsid 的入口 不是 DriverEnableDriver 呢? 谢谢! [编辑 - 9/7/04 by iterater] |
|
7楼#
发布于:2004-09-08 09:05
当然不能光EngLoadImage。这只是一个开头,万事起头难。给你一个思路,下面要你自己去完成。记得很久之前和人讨论过这个问题,不知道还能不能找到当年的帖子。用这中方法你应该实现所有的DrvXXX函数,在这些函数中再调用显示驱动的相应的DrvXXX。
|
|
|
8楼#
发布于:2004-09-08 09:21
看看这贴,里面提到EngLoadImage的用法。
http://www.driverdevelop.com/forum/viewthread.php?fid=16&tid=25690&page=1&totalpost=34 |
|
|
9楼#
发布于:2004-09-08 10:00
leerom 大哥,谢谢了
晕死,这就是 太麻烦了,不过没 办法,只好 这样做罗 不知到是否 可行呢? |
|
10楼#
发布于:2004-09-08 10:20
如果可行,别忘了通知大家。
另外,能不能给每位热心回答问题的同志加些分!:-) |
|
|
11楼#
发布于:2004-09-08 11:34
呵呵,jawsvid 我 反 汇编 看了一下就是 这样做的
不过 我支持 所有 ddi 中的函数 ,就够了吗?vga 的显卡 就没问题了吧! 怎么 给分呀,找遍了也 没见个 操作提示! |
|
12楼#
发布于:2004-09-08 11:41
哎,终于找见了
|
|
13楼#
发布于:2004-09-08 12:09
即使采用显卡过滤驱动也无法获得DIRECTX的图象,除非对所有的DIRECXT的函数全部HOOK。。。。。。
|
|
|