阅读:3177回复:8
IrpSp->Parameters.MountVolume.DeviceObject与IrpSp->Parameters.MountVolume.Vpb.RealDevice之间的关系?
到底哪个是指向块设备?
|
|
|
沙发#
发布于:2004-08-17 20:16
前者指向文件系统设备对象,后者指向物理设备对象。
其实你可以 沿着 DEVICE_OBJECT->DRIVER_OBJECT->DRIVER_NAME这样追一下就知道了嘛 :D |
|
板凳#
发布于:2004-08-18 09:01
前者指向文件系统设备对象,后者指向物理设备对象。 thank you! ddk中怎么没有把这个讲清楚阿? |
|
|
地板#
发布于:2004-08-18 11:23
前者指向文件系统设备对象,后者指向物理设备对象。 再问一个: 这个“文件系统设备对象“到底是怎么回事啊? 难道一个块设备还不够吗? :) |
|
|
地下室#
发布于:2004-08-18 12:59
如果有文件系统对这个块设备进行了mount操作,那么文件系统创建的设备对象就接管了块设备。 当有针对块设备对象的文件操作时,根据VPB,就被重定向到了文件系统设备对象。
[编辑 - 8/18/04 by RED_spring] |
|
5楼#
发布于:2004-08-18 13:11
如果有文件系统对这个块设备进行了mount操作,那么文件系统创建的设备对象就接管了块设备。 当有IRP到块设备对象时,根据VPB,就被重定向到了文件系统设备对象。 我说的是mount时,传进来的Vpb.Realdevice与IrpSp->Parameters.MountVolume.DeviceObject。 好像文件系统vdo对盘的操作主要是通过MountVolume.DeviceObject,而不是通过块设备RealDevice,这是什么原因? 前者仅是后者的wrap吗? // 至于文件系统的vdo不是交给Vpb->DeviceObject返回了吗? |
|
|
6楼#
发布于:2004-08-18 18:30
对不起,看错了 :D
“好像文件系统vdo对盘的操作主要是通过MountVolume.DeviceObject,而不是通过块设备RealDevice,这是什么原因?” 可能是考虑到块设备上面还会有其他的filter driver device吧。MountVolume.DeviceObject应该是当时(没有mount时)处于设备堆栈最上层的那个家伙。 [编辑 - 8/18/04 by RED_spring] |
|
7楼#
发布于:2004-08-19 08:47
对不起,看错了 :D 我想从ddk找到答案,后来发现ddk中根本没把这事说清楚。 |
|
|
8楼#
发布于:2010-04-16 21:34
Re:IrpSp->Parameters.MountVolume.DeviceObject与IrpSp->Parameters.MountVolume.Vpb.RealDevic ..
楼主明白了吗?我也有同样的疑问。 |
|