punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
阅读:3022回复:8

IrpSp->Parameters.MountVolume.DeviceObject与IrpSp->Parameters.MountVolume.Vpb.RealDevice之间的关系?

楼主#
更多 发布于:2004-08-17 17:11
到底哪个是指向块设备?
不停学习
RED_spring
驱动中牛
驱动中牛
  • 注册日期2002-07-28
  • 最后登录2016-11-06
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望19点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2004-08-17 20:16
前者指向文件系统设备对象,后者指向物理设备对象。

其实你可以 沿着 DEVICE_OBJECT->DRIVER_OBJECT->DRIVER_NAME这样追一下就知道了嘛  :D
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-08-18 09:01
前者指向文件系统设备对象,后者指向物理设备对象。

其实你可以 沿着 DEVICE_OBJECT->DRIVER_OBJECT->DRIVER_NAME这样追一下就知道了嘛  :D

thank you!
ddk中怎么没有把这个讲清楚阿?
不停学习
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-08-18 11:23
前者指向文件系统设备对象,后者指向物理设备对象。

其实你可以 沿着 DEVICE_OBJECT->DRIVER_OBJECT->DRIVER_NAME这样追一下就知道了嘛  :D

再问一个:
这个“文件系统设备对象“到底是怎么回事啊?
难道一个块设备还不够吗? :)
不停学习
RED_spring
驱动中牛
驱动中牛
  • 注册日期2002-07-28
  • 最后登录2016-11-06
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望19点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2004-08-18 12:59
如果有文件系统对这个块设备进行了mount操作,那么文件系统创建的设备对象就接管了块设备。  当有针对块设备对象的文件操作时,根据VPB,就被重定向到了文件系统设备对象。

[编辑 -  8/18/04 by  RED_spring]
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-08-18 13:11
如果有文件系统对这个块设备进行了mount操作,那么文件系统创建的设备对象就接管了块设备。  当有IRP到块设备对象时,根据VPB,就被重定向到了文件系统设备对象。

我说的是mount时,传进来的Vpb.Realdevice与IrpSp->Parameters.MountVolume.DeviceObject。
好像文件系统vdo对盘的操作主要是通过MountVolume.DeviceObject,而不是通过块设备RealDevice,这是什么原因?
前者仅是后者的wrap吗?
//
至于文件系统的vdo不是交给Vpb->DeviceObject返回了吗?
不停学习
RED_spring
驱动中牛
驱动中牛
  • 注册日期2002-07-28
  • 最后登录2016-11-06
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望19点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2004-08-18 18:30
对不起,看错了  :D

“好像文件系统vdo对盘的操作主要是通过MountVolume.DeviceObject,而不是通过块设备RealDevice,这是什么原因?”

可能是考虑到块设备上面还会有其他的filter driver device吧。MountVolume.DeviceObject应该是当时(没有mount时)处于设备堆栈最上层的那个家伙。




[编辑 -  8/18/04 by  RED_spring]
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-08-19 08:47
对不起,看错了  :D

“好像文件系统vdo对盘的操作主要是通过MountVolume.DeviceObject,而不是通过块设备RealDevice,这是什么原因?”

可能是考虑到块设备上面还会有其他的filter driver device吧。MountVolume.DeviceObject应该是当时(没有mount时)处于设备堆栈最上层的那个家伙。




[编辑 -  8/18/04 by  RED_spring]


我想从ddk找到答案,后来发现ddk中根本没把这事说清楚。
不停学习
hellozhihua
驱动牛犊
驱动牛犊
  • 注册日期2010-03-20
  • 最后登录2010-09-27
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望81点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2010-04-16 21:34
Re:IrpSp->Parameters.MountVolume.DeviceObject与IrpSp->Parameters.MountVolume.Vpb.RealDevic ..
楼主明白了吗?我也有同样的疑问。
游客

返回顶部