michael4338
驱动小牛
驱动小牛
  • 注册日期2004-12-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分238分
  • 威望66点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
阅读:2112回复:12

请问,中间层设备读写例程的参数中怎么得到设备扩展?

楼主#
更多 发布于:2005-08-04 14:03
  我说的设备扩展就是Passthru中的Adapt结构,我在其中加入了自己的参数。我想在IRP_MJ_READ 和IRP_MJ_WRITE处理例程中得到这个Adapt结构,请问它能得到吗?如果能,那么它是在Irp的那个地方?谢谢各位了
我思故我在
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
沙发#
发布于:2005-08-04 15:32
保存注册时一个全局变量不久可以了吗
走走看看开源好 Solaris vs Linux
michael4338
驱动小牛
驱动小牛
  • 注册日期2004-12-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分238分
  • 威望66点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-08-04 15:58
全局变量?可行吗?我所遇见的都是从IRP中获得的,大家讨论一下吧
我思故我在
michael4338
驱动小牛
驱动小牛
  • 注册日期2004-12-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分238分
  • 威望66点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-08-04 16:07
我在读例程中什么也不干,直接将status设为失败,然后返回,结果就重启了,是不是中间层不支持这个IRP_MJ_READ啊?
我思故我在
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-08-04 16:28
响应IRP_MJ_READ时的设备扩展,和Adapt不是一回事,系统创建的这个设备的设备不能响应IRP_MJ_READ的。可参考NIDSUIO的例子。
michael4338
驱动小牛
驱动小牛
  • 注册日期2004-12-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分238分
  • 威望66点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-08-04 17:30
谢谢老大的热心回复,NdisUio里面用的是IoCreateDevice方法,而且它没用设备扩展。我们是不是可以认为设备扩展并没有作用在这里?或许真可以用一个全局变量来代替它。
NdisUio那一套东西是protocol层次上的,用在中间层可以吗?
我思故我在
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-08-04 18:32
我认为得不到,欢迎大家讨论,晚上我会验证一下。
michael4338
驱动小牛
驱动小牛
  • 注册日期2004-12-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分238分
  • 威望66点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-08-04 19:17
希统创建的设备的设备不能响应IRP_MJ_READ的


确实是这样的。但是XpDDK中的passthru中给出了IRP_MJ_DEVICE_CONTROL的处理例程,这个可以,为什么IRP_MJ_READ就不行呢?
我思故我在
michael4338
驱动小牛
驱动小牛
  • 注册日期2004-12-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分238分
  • 威望66点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-08-05 11:52
难道我只能用IRP_MJ_DEVICE_CONTROL?谁知道IRP_MJ_DEVICE_CONTROL能不能返回参数啊?我想通过它把一个包带回应用程序,就像IRP_MJ_READ做的那样,可行吗?
我思故我在
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-08-05 18:19
我试了很多方法,没有办法得到PAdAPTER,但是我证实了,NDISUIO的那一套在PASSTHRU中完全可行。其实NDISUIO的方法本质就是使用的全局变量,所以他不用设备扩展。
另外,IRP_MJ_READ可以带参数返回。
michael4338
驱动小牛
驱动小牛
  • 注册日期2004-12-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分238分
  • 威望66点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-08-06 08:15
老大就是老大,佩服啊!可惜这个新版不能给分了...
还有两个问题:
1、NdisUio中的接收包部分也可以适用于passthru吗?因为它里面涉及到PtReceive和PtReceivePacket。而现有的描述或源码好像都只处理了PtReceive。

2、另外NdisUio是协议层,如果它和Passthru同时安装的话,它是不是要位于Passthru的上层呢?
我思故我在
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-08-08 12:34
1、接收部分我没有试,你自己试一下。PtReceive和PtReceivePacket都要处理。不同的网卡响应的函数不同,一般8139都响应PtReceivePacket,8029在2K下调用的是PtReceive,别的就没有测试过了,总之,都处理了就没有问题了。
2、是的。
michael4338
驱动小牛
驱动小牛
  • 注册日期2004-12-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分238分
  • 威望66点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-08-10 12:41
老大,NdisUio是不是只能在局域网里收包和发包?我看它的接收和发送都是只有协议类型和地址字段
我思故我在
游客

返回顶部