阅读:1265回复:3
关于sfilter的2个问题
我在看sfilter的过程中有2个问题,一直很困惑:
1 。winddk中sfilter的6507行(SfIsShadowCopyVolume函数中),IoCallDriver的第一个参数是StorageStackDeviceObject,它显然不是DeviceObject的下一个设备对象[即((PSFILTER_DEVICE_EXTENSION) DeviceObject->DeviceExtension)->AttachedToDeviceObject],而sfilter中除了这一个IoCallDriver之外其他的IoCallDriver的第一个参数都是DeviceObject的下一个设备对象[即((PSFILTER_DEVICE_EXTENSION) DeviceObject->DeviceExtension)->AttachedToDeviceObject]。IoCallDriver调用不是将Irp发往下一个设备吗?它的第一个参数是不是都应该是DeviceObject的下一个设备对象呢?这个地方一直想不通,请指教。 2 。SfFsNotification回调函数,还有其他一些分发例程SfFsControl,SfPassThrough,SfCreate,SfRead,SfWrite,SfCleanupClose,它们都有DeviceObject参数,我的问题是它们的DeviceObject参数都一样吗,都是指的同一个设备对象吗?如果是,DeviceObject指的是哪个设备对象?如果不是,请分别说明每一个DeviceObject指的是哪个设备对象? |
|
沙发#
发布于:2007-11-22 21:19
非常感谢tooflat版主,能看一下 驱动小妹的“传一个简单的隐藏文件的过滤驱动,想请教与应用程序的通信问题”这个问题吗?已经困扰好长时间了。
|
|
板凳#
发布于:2007-11-22 11:29
1,"IoCallDriver调用不是将Irp发往下一个设备吗?它的第一个参数是不是都应该是DeviceObject的下一个设备对象呢?"
IoCallDriver只负责把irp发给指定的设备,windows没有规定irp只能发给设备栈的下一个设备。 2,这些设备对象都是不同的,比如可能是C盘的文件系统内部的卷设备对象,也可能是是D盘的文件系统内部的卷设备对象,还可能是文件系统的控制设备对象。 建议楼主把驱动里面的所有设备对象全部打印出来,看看流程是怎么走的。 |
|
地板#
发布于:2007-11-22 10:49
望高手指点一二
|
|