xdwumin
驱动牛犊
驱动牛犊
  • 注册日期2005-12-22
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分370分
  • 威望38点
  • 贡献值0点
  • 好评度37点
  • 原创分0分
  • 专家分0分
阅读:2190回复:15

请问不同驱动程序间如何实现通信?

楼主#
更多 发布于:2007-11-16 17:13
打算用acidfish老大的虚拟串口和DDK的ndisuio例子实现网络串口
即将串口收到的数据发送到以太网
同时将以太网收到的数据发给串口
但是这是两个独立的驱动,似乎不能用IRP通信
出于效率考虑也不想通过用户层转发
而是希望在两个驱动间直接收发数据

可是之前没有相关经验
搜索了一下没有找到合适的
不知大家能否指点一二
不胜感激
WQXNETQIQI
驱动大牛
驱动大牛
  • 注册日期2006-06-12
  • 最后登录2010-10-26
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望1076点
  • 贡献值0点
  • 好评度895点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2007-11-16 19:48
event,Call Driver, section~
驱动开发者 呵呵
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
板凳#
发布于:2007-11-18 08:23
互相为对方提供导出的函数就可以~甚至互相注册回调~~
学习微软怎么做的,不要event,iocalldriver之类的,他们效率绝对没有互相注册回调快(NDIS不就是注册回调式么?)
没有战争就没有进步 X3工作组 为您提供最好的军火
xdwumin
驱动牛犊
驱动牛犊
  • 注册日期2005-12-22
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分370分
  • 威望38点
  • 贡献值0点
  • 好评度37点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-11-19 09:53
引用第2楼killvxk于2007-11-18 08:23发表的  :
互相为对方提供导出的函数就可以~甚至互相注册回调~~
学习微软怎么做的,不要event,iocalldriver之类的,他们效率绝对没有互相注册回调快(NDIS不就是注册回调式么?)

您的意思是只要设法将函数地址告知另一驱动即可直接调用吗?
在NDIS驱动内可以直接访问虚拟串口中IRP的内容吗?
是否会有权限问题?
xdwumin
驱动牛犊
驱动牛犊
  • 注册日期2005-12-22
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分370分
  • 威望38点
  • 贡献值0点
  • 好评度37点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-11-19 10:00
现在的主要问题是这两个驱动是相互独立的,没有上下层关系
iocalldriver应该是用不成的吧?

而且需要传输的数据量也比较大
1楼的大牛能详细说一下section如何使用吗?
我听人说过这个,但是网上好像搜不到资料
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
5楼#
发布于:2007-11-19 10:01
驱动里哪来的权限问题~~
没有战争就没有进步 X3工作组 为您提供最好的军火
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
6楼#
发布于:2007-11-19 10:04
引用第4楼xdwumin于2007-11-19 10:00发表的  :
现在的主要问题是这两个驱动是相互独立的,没有上下层关系
iocalldriver应该是用不成的吧?

而且需要传输的数据量也比较大
1楼的大牛能详细说一下section如何使用吗?
.......

自建irp用iocalldriver发给另一个驱动是可以的~

回调注册机制是效率最好的~只是需要两个驱动都为对方提供导出的注册回调的函数而已~
没有战争就没有进步 X3工作组 为您提供最好的军火
xdwumin
驱动牛犊
驱动牛犊
  • 注册日期2005-12-22
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分370分
  • 威望38点
  • 贡献值0点
  • 好评度37点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-11-19 10:29
引用第6楼killvxk于2007-11-19 10:04发表的  :

自建irp用iocalldriver发给另一个驱动是可以的~

回调注册机制是效率最好的~只是需要两个驱动都为对方提供导出的注册回调的函数而已~


谢谢

只是还有一事小弟不太明白

我这两个驱动是独立的,那么在最初阶段我如何将其中一个驱动的deviceobject指针或其内其他函数的指针告知另一驱动程序呢?
xdwumin
驱动牛犊
驱动牛犊
  • 注册日期2005-12-22
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分370分
  • 威望38点
  • 贡献值0点
  • 好评度37点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-11-19 11:10
引用第7楼xdwumin于2007-11-19 10:29发表的  :


谢谢

只是还有一事小弟不太明白
.......


自己先试试笨办法吧
弄个应用程序分别下发IOCTL应该没问题
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
9楼#
发布于:2007-11-19 16:18
太复杂了吧。直接调用各自的的输入输出接口就可以了,不就是接口地址吗,导出为全局就可以了! unix规则:越简单越好
走走看看开源好 Solaris vs Linux
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
10楼#
发布于:2007-11-20 19:27
引用第9楼cyliu于2007-11-19 16:18发表的  :
太复杂了吧。直接调用各自的的输入输出接口就可以了,不就是接口地址吗,导出为全局就可以了! unix规则:越简单越好


不过如果他的驱动以后还要提供给其他的xxx人写的第三方来使用其双向能力,不就出现了麻烦了么~建议学习ndis~~
没有战争就没有进步 X3工作组 为您提供最好的军火
gutian98
禁止发言
禁止发言
  • 注册日期2003-01-12
  • 最后登录2016-12-11
  • 粉丝4
  • 关注2
  • 积分760分
  • 威望8026点
  • 贡献值1点
  • 好评度364点
  • 原创分0分
  • 专家分21分
  • 金点子奖
  • 社区居民
11楼#
发布于:2007-11-21 17:56
用户被禁言,该主题自动屏蔽!
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
12楼#
发布于:2007-11-22 13:41
参考ndis和netio的实现~~哈哈~~
没有战争就没有进步 X3工作组 为您提供最好的军火
galaxay
驱动小牛
驱动小牛
  • 注册日期2004-11-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望129点
  • 贡献值0点
  • 好评度129点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2008-01-23 15:16
但是两个驱动如果不在同一个设备栈里面的话,还能用IoCallDriver么?
tiamo
VIP专家组
VIP专家组
  • 注册日期2002-02-26
  • 最后登录2018-01-09
  • 粉丝17
  • 关注4
  • 积分50分
  • 威望142点
  • 贡献值1点
  • 好评度40点
  • 原创分2分
  • 专家分15分
  • 原创先锋奖
  • 社区居民
14楼#
发布于:2008-01-23 21:46
http://www.osronline.com/article.cfm?id=24

可以看这个.....第一个办法是微软推荐的..并且微软自己大量使用的办法
qiweixue
驱动小牛
驱动小牛
  • 注册日期2004-07-21
  • 最后登录2011-12-19
  • 粉丝0
  • 关注0
  • 积分1006分
  • 威望274点
  • 贡献值0点
  • 好评度268点
  • 原创分1分
  • 专家分0分
15楼#
发布于:2008-01-24 13:41
学习    
游客

返回顶部