阅读:1014回复:2
关于文件系统设备栈组成的问题
这两天看了sfilter代码,有个疑问向各位请教:
在DriverEntry中,我们首先创建了一个CDO,这个设备对象代表过滤驱动程序的控制设备对象; 然后为了绑定文件系统的CDO,我们又创建了一个设备对象,暂且称之为DeviceObject1,只有创建了这个设备对象后,IRP_MJ_FILE_SYSTEM_CONTROL请求就会先发送给DeviceObject1,这样就可以处理对各个卷进行绑定的请求; 而后在mount卷的过程中,我们又创建了一个设备对象用于绑定到卷设备的设备栈上,暂且称为DeviceObject2; 我的问题是:DeviceObject1和DeviceObject2是否处于同一个设备栈中?如果不是,那么究竟是怎样的一种结构? |
|
|
沙发#
发布于:2007-03-14 06:21
不是!文件系统的CDO其实和自己driver的CDO类似,都是为了进行总体控制,或者和其他app/driver进行通讯用的;而加载在volume上的DO才是真正过滤文件读写的。你用Device Tree一看就知道他们2个是在不同的stack中,互相只是sibling关系,并不是parent-child。
|
|
|
板凳#
发布于:2007-03-14 08:44
非常感谢!
|
|
|