阅读:2273回复:10
内核模式下的DLL 与用户态的 应用程序如何通信呀
比如 我用mirror Driver的例子,在DrvTextOut,DrvCopyBits等中传过来的视频数据 ,我想把他传到我的应用程序中显示出来,该如何做呀!
好象在显卡的miniport端口 驱动中的VIDEO_HW_INITIALIZATION_DATA 的结构 又不能加IRP_MJ_DEVICE_CONTROL 的处理例程 我是新手,有一个不是法子的法子就是 ,在搞个驱动,在这个驱动里和 用户程序 用事件同步,和mirror.dll 中共享内存+事件同步! 我该如何做呢? 谢谢! |
|
沙发#
发布于:2004-08-11 19:41
还有,就是这个mirror driver 中 的miniport driver 起个什么作用呀!
没有 为mirror.dll 处理任何东东呀! 只是提供了一个驱动的入口呀! |
|
板凳#
发布于:2004-08-11 22:23
参考ULTRAVNC代码。
|
|
|
地板#
发布于:2004-08-19 00:36
ULTRAVNC代码 那里有? 那位大侠可以给一份?
|
|
|
地下室#
发布于:2004-08-22 15:41
在miniport里分配一块内存,然后映射到Usermode,在用event来同步AP和kernel mode driver.我想这样应该是可以的。
|
|
5楼#
发布于:2004-08-31 14:30
少量数据可以用ExtEscape来和显示驱动通讯。
当然在驱动程序中要实现DrvEscape,以便处理你的Escape请求。 |
|
|
6楼#
发布于:2004-09-01 16:55
谢谢两位!
由于 前一段 时间 还对 驱动 特别 陌生, 这几个 都已经 解决 ,我是用的 drvEscape 加事件同步 , 当时 是 出现了一个误区,在 gdi_driver 中直接 用 EngLoadImage 加在 ntoskrnl 然后 取 keXXX函数地址,直接 调用好象不能用,当时没有 想到,通过一个 kernel mode dll 来间接实现 不过我现在还 不明白 为什么, |
|
7楼#
发布于:2004-09-01 20:15
那是因为不能连接,其实VNC的驱动已经说的很清楚了,就那么点东西,也没什么好奇怪的,而且在GDI驱动中也不能创建内核线程,虽然在2K下也许可以,不过在XP以后你会死的很惨。。。。。
|
|
|
8楼#
发布于:2004-09-02 12:21
那有 vnc驱动的source code 呀,
我怎么只下载到 应用层的呀! 不过我又出现了问题,就是 DrvTextOut 怎么不是每次都 调用啊! 好象 是 gdiinfo 的设置除了问题? 可是 gdiinfo.flTextCaps 我加了 TC_SCROLLBLT呀,但gdi还是用 drvcopybits, drvbltbit来做了! 就在 ie 窗口, .net 的编辑 窗口 等等,很多呢! 呵呵,还有 就做 filter driver 则 该怎么做了?(在drvenabledriver 里 怎么 让 old driver 失效,在filter driver 的drvtextout 里怎么调用以前的 drvtextout呢?还有好象也没有介绍这的资料,如果有 告一下哟!)应该不会出现这个问题, 还有一个 没有 证实的问题,就是在 mirror 驱动里 如果让 drvtextout 堵塞,gdi 会 抛弃 其它 的绘制 动作吗?还是 在起动作队列 里等待! wowocock,tornadohf,leerom 等等几位 兄弟,太感谢了,估计20分不够,待 结贴 后,新开 加份 还有 一个感慨呀,wdm 真的是比较 凌乱啊! |
|
9楼#
发布于:2004-09-02 12:29
wowocock 大哥,
这小弟就不明白了? ntkrnlos.exe 不是长驻 的吗? 有了 base addr 还有了 offset addr 怎么还不能调用函数呢? 地址 的 影射 空间 不一样? 其实 就 是 整个 显示 驱动,乃至 驱动 的 架构 还是很 清晰 望指点一下 |
|
10楼#
发布于:2004-09-02 16:17
GDI驱动和WDM,KMD的不同,确切的我也很难说,就拿PSCREATESYSTEMTHREAD来说创建的时候没问题,可到执行的时候发现原来的函数都变成INVALID了,导致了页故障,而DDK里的说明是GDI驱动必须都是分页的,真搞不懂。。。。。。
|
|
|