wangdy6
驱动牛犊
驱动牛犊
  • 注册日期2002-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1665回复:17

不属于一个DeviceStack的独立的两个驱动之间的调用各位大佬!!帮忙看一下!!我的设想对不对?(多多给分!)

楼主#
更多 发布于:2003-02-18 16:18
各位大虾:

我正开发一个程序,要是实现的目标如下:
我有一个网卡驱动程序---完全好用,我现在想另外开发一个驱动,此驱动向原来的网卡驱动发送
irp(IRP_MN_QUERY_INTERFACE),来获得网卡所用总线的接口(interface) , 我设想用IoGetDeviceObjectPointer()例程
取得原网卡驱动的DeviceObject,给IoCallDriver()用, 用 IoCallDriver(DeviceObject,irp)调用网卡,
各位大虾,我的设想可行否?我老板崔的急,我怕设想不对耽误时间!!
我的驱动与原来的网卡不在一个设备堆栈!!



最新喜欢:

tjmtjm
大家好
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
沙发#
发布于:2003-02-18 16:56
网卡驱动程序有源代码吗?
wangdy6
驱动牛犊
驱动牛犊
  • 注册日期2002-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-02-18 17:40
有的
大家好
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2003-02-18 21:38
即可以写成所谓的“紧耦合”驱动程序。
你的网卡在AddDevice用IoRegisterDeviceInterface暴露一个接口,然后调用IoSetDeviceInterface启用。
后来的(高级)驱动,通过接口来调用函数。绕过IoCallDriver了。
yuri69
驱动小牛
驱动小牛
  • 注册日期2002-07-12
  • 最后登录2005-12-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-02-19 00:12
如果我 的驱动在上,想调用的驱动在下呢?

应该怎样操作?
我不会停止对你的思念,就像呼吸一样,我不去特意的想,但是,只能屏息,而不可能停止
jfory
驱动小牛
驱动小牛
  • 注册日期2002-05-14
  • 最后登录2003-06-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-02-19 09:09
支持一下!
swf2003
驱动中牛
驱动中牛
  • 注册日期2003-02-13
  • 最后登录2011-10-28
  • 粉丝1
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-02-19 09:10
用IoGetDeviceObjectPointer() 取得 PFILE_OBJECT
然后调用 KsSynchronousIoControlDevice();
走 DeviceIoControl 。
你的认可是对我最大的鼓励!
nustzhua
驱动中牛
驱动中牛
  • 注册日期2002-06-19
  • 最后登录2015-09-27
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-02-19 09:31
关注
不限容量的免费邮箱 www.k65.net
xinghaiyun
驱动牛犊
驱动牛犊
  • 注册日期2002-03-13
  • 最后登录2004-06-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-02-19 11:16
用IoGetDeviceObjectPointer() 取得 PFILE_OBJECT
然后调用 KsSynchronousIoControlDevice();
走 DeviceIoControl 。
 


请教:能用ZwCreateFile,ZwWriteFile等函数吗?
wangdy6
驱动牛犊
驱动牛犊
  • 注册日期2002-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-02-19 11:32
RE arthurtu:
   我的目的是,让网卡所处的总线暴露出它的接口(interface),
所以,我想它发送IRP_MN_QUERY_INTERFACE,然后用它的interface.getdata(或setdata)去操作总线上的映射的memory;
 即:我的驱动想原有的网卡驱动发送IRP_MN_QUERY_INTERFACE IRP
 但,网卡的deviceObject(IoGetDeviceObjectPointer例程将用到此参数)是不能像普通的wdm驱动的设备对象一样由AddDevice()创建的,
我查到用NdisMRegisterDevice()勉强可创建一个,但我把IRP发给他后,我必须得在miniport()驱动中自己写派遣例程转发IRP给总线驱动。所以,对我来说只是IoCallDriver()中的DeviceObject参数没法获得,你的建议还是没解决网卡的设备对象的获得
re swf2003:
  网卡的deviceObject无法获取,FileObject就更没法定位了,即IoGetDeviceObjectPointer()的第一个参数怎样解决?

  
附件名称/大小 下载次数 最后更新
2003-02-19_KB10290101 - [NDIS] NDIS Miniport User-Mode Interface Techniques.htm (47KB)  1
大家好
swf2003
驱动中牛
驱动中牛
  • 注册日期2003-02-13
  • 最后登录2011-10-28
  • 粉丝1
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-02-19 13:39
RE arthurtu:
   我的目的是,让网卡所处的总线暴露出它的接口(interface),
所以,我想它发送IRP_MN_QUERY_INTERFACE,然后用它的interface.getdata(或setdata)去操作总线上的映射的memory;
 即:我的驱动想原有的网卡驱动发送IRP_MN_QUERY_INTERFACE IRP
 但,网卡的deviceObject(IoGetDeviceObjectPointer例程将用到此参数)是不能像普通的wdm驱动的设备对象一样由AddDevice()创建的,
我查到用NdisMRegisterDevice()勉强可创建一个,但我把IRP发给他后,我必须得在miniport()驱动中自己写派遣例程转发IRP给总线驱动。所以,对我来说只是IoCallDriver()中的DeviceObject参数没法获得,你的建议还是没解决网卡的设备对象的获得
re swf2003:
  网卡的deviceObject无法获取,FileObject就更没法定位了,即IoGetDeviceObjectPointer()的第一个参数怎样解决?
  
 


 用符号链接名 (SymbolicLink) !!
你的认可是对我最大的鼓励!
swf2003
驱动中牛
驱动中牛
  • 注册日期2003-02-13
  • 最后登录2011-10-28
  • 粉丝1
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-02-19 13:44
[quote]用IoGetDeviceObjectPointer() 取得 PFILE_OBJECT
然后调用 KsSynchronousIoControlDevice();
走 DeviceIoControl 。
 


请教:能用ZwCreateFile,ZwWriteFile等函数吗? [/quote]

理论上也能用
ZwCreateFile,ZwWriteFile 。
 在 ZwCreateFile 时文件名与 IoGetDeviceObjectPointer()的一致。但ZwWriteFile 不一定能行,因为 Driver 中 不一定支持 IRP_MJ_WRITE。
你的认可是对我最大的鼓励!
yuri69
驱动小牛
驱动小牛
  • 注册日期2002-07-12
  • 最后登录2005-12-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-02-19 13:56
据资料(ddk)

我们现在讨论的驱动可以 看作是 filter driver, 如果能够让 pnp 管理器把我们的驱动放在 系统提供的驱动 在设备栈连接的话,所有的问题就都不成问题了。

好像这些操作和代码无关。 因为 pdo ,即设备栈下面的驱动是系统作为参数传进来的。 我看ddk 说的是 应该在 inf中 指定 Dependenc 和 启动的顺序。

具体的我还没弄明白。

等弄明白了在和大家讨论。 见笑见笑!
我不会停止对你的思念,就像呼吸一样,我不去特意的想,但是,只能屏息,而不可能停止
wangdy6
驱动牛犊
驱动牛犊
  • 注册日期2002-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-02-19 14:00
RE swf2003:
    请问在NDIS的符号链接名(SymbolicLink),如何获取?
 关于这个问题我上一个帖子的附件有一些说明,





  不知各位有什么建议?





  


附件名称/大小 下载次数 最后更新
2003-02-19_KB10290101 - [NDIS] NDIS Miniport User-Mode Interface Techniques.htm (47KB)  0
大家好
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
14楼#
发布于:2003-02-19 19:22
RE arthurtu:
   我的目的是,让网卡所处的总线暴露出它的接口(interface),
所以,我想它发送IRP_MN_QUERY_INTERFACE,然后用它的interface.getdata(或setdata)去操作总线上的映射的memory;
 即:我的驱动想原有的网卡驱动发送IRP_MN_QUERY_INTERFACE IRP
 但,网卡的deviceObject(IoGetDeviceObjectPointer例程将用到此参数)是不能像普通的wdm驱动的设备对象一样由AddDevice()创建的,
我查到用NdisMRegisterDevice()勉强可创建一个,但我把IRP发给他后,我必须得在miniport()驱动中自己写派遣例程转发IRP给总线驱动。所以,对我来说只是IoCallDriver()中的DeviceObject参数没法获得,你的建议还是没解决网卡的设备对象的获得
 

我对NDIS的不熟。
如果可以有个DeviceObject,通过所谓“耦合”,你可以调用网卡的函数,网卡获得总线的接口应该是可以的吧?

HiDriver
...
Call LowFunction1---->
------>函数表(LowFuntion0,LowFunction1...)--->
       LoDriver
------>Lowfunction1---->返回

还需要给总线发IRP吗?
wangdy6
驱动牛犊
驱动牛犊
  • 注册日期2002-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-02-20 09:23
re arthurtu:
  实际上,我现在做的就是“紧耦合“,但我的底层驱动对象是网路驱动,我无法获得总线interface,ndis的方式与标准的wdm不同,
不知你能否有关于,wdm与ndis相互操作的例程与资料
 谢谢老兄!!
大家好
wangdy6
驱动牛犊
驱动牛犊
  • 注册日期2002-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-02-20 09:34
re arthurtu:
你能否告诉我,“紧耦合“英文怎么说?
大家好
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
17楼#
发布于:2003-02-20 16:17
我也想知道。 :D
游客

返回顶部