阅读:2190回复:15
请问不同驱动程序间如何实现通信?
打算用acidfish老大的虚拟串口和DDK的ndisuio例子实现网络串口
即将串口收到的数据发送到以太网 同时将以太网收到的数据发给串口 但是这是两个独立的驱动,似乎不能用IRP通信 出于效率考虑也不想通过用户层转发 而是希望在两个驱动间直接收发数据 可是之前没有相关经验 搜索了一下没有找到合适的 不知大家能否指点一二 不胜感激 |
|
沙发#
发布于:2007-11-16 19:48
event,Call Driver, section~
|
|
|
板凳#
发布于:2007-11-18 08:23
互相为对方提供导出的函数就可以~甚至互相注册回调~~
学习微软怎么做的,不要event,iocalldriver之类的,他们效率绝对没有互相注册回调快(NDIS不就是注册回调式么?) |
|
|
地板#
发布于:2007-11-19 09:53
引用第2楼killvxk于2007-11-18 08:23发表的 : 您的意思是只要设法将函数地址告知另一驱动即可直接调用吗? 在NDIS驱动内可以直接访问虚拟串口中IRP的内容吗? 是否会有权限问题? |
|
地下室#
发布于:2007-11-19 10:00
现在的主要问题是这两个驱动是相互独立的,没有上下层关系
iocalldriver应该是用不成的吧? 而且需要传输的数据量也比较大 1楼的大牛能详细说一下section如何使用吗? 我听人说过这个,但是网上好像搜不到资料 |
|
5楼#
发布于:2007-11-19 10:01
驱动里哪来的权限问题~~
|
|
|
6楼#
发布于:2007-11-19 10:04
引用第4楼xdwumin于2007-11-19 10:00发表的 : 自建irp用iocalldriver发给另一个驱动是可以的~ 回调注册机制是效率最好的~只是需要两个驱动都为对方提供导出的注册回调的函数而已~ |
|
|
7楼#
发布于:2007-11-19 10:29
引用第6楼killvxk于2007-11-19 10:04发表的 : 谢谢 只是还有一事小弟不太明白 我这两个驱动是独立的,那么在最初阶段我如何将其中一个驱动的deviceobject指针或其内其他函数的指针告知另一驱动程序呢? |
|
8楼#
发布于:2007-11-19 11:10
引用第7楼xdwumin于2007-11-19 10:29发表的 : 自己先试试笨办法吧 弄个应用程序分别下发IOCTL应该没问题 |
|
9楼#
发布于:2007-11-19 16:18
太复杂了吧。直接调用各自的的输入输出接口就可以了,不就是接口地址吗,导出为全局就可以了! unix规则:越简单越好
|
|
|
10楼#
发布于:2007-11-20 19:27
引用第9楼cyliu于2007-11-19 16:18发表的 : 不过如果他的驱动以后还要提供给其他的xxx人写的第三方来使用其双向能力,不就出现了麻烦了么~建议学习ndis~~ |
|
|
11楼#
发布于:2007-11-21 17:56
用户被禁言,该主题自动屏蔽! |
|
12楼#
发布于:2007-11-22 13:41
参考ndis和netio的实现~~哈哈~~
|
|
|
13楼#
发布于:2008-01-23 15:16
但是两个驱动如果不在同一个设备栈里面的话,还能用IoCallDriver么?
|
|
14楼#
发布于:2008-01-23 21:46
|
|
15楼#
发布于:2008-01-24 13:41
学习
|
|