emt_2000@sina.c
驱动牛犊
驱动牛犊
  • 注册日期2008-06-05
  • 最后登录2008-09-24
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望11点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1547回复:3

各位大牛,谁能帮忙回答个简单问题,关于文件系统设备栈的

楼主#
更多 发布于:2008-07-08 10:49
现在我提的这个问题估计对于某些人来说也比较简单,或许是这里许多大牛不屑一顾的,
然而我查了很多资料都没有提到,好像无意中就忽略了这个问题,而这又涉及到逻辑上对
文件系统的一个完整的理解。所以在这里问一下,希望已经了解的朋友给点思路,万分感谢!
问题是这样,起初我只想了解文件系统一个完整的irp流程,
举个例子,我就不写很详细了,大家应该都明白,
在我的机器上大约经过以下几个驱动所在的设备的irp栈:
fltmgr->(fastfat,ntfs)的文件系统设备
volsnap->ftdisk卷设备
partmgr->disk的DR0设备->ACPI的某个设备->atapi的IdeDevicePotolo-x设备
大概是这三个irp栈

这三个栈上相关驱动的设备的IRP栈大小排列如下:
驱动            驱动创建的设备的IRP栈大小
fltmgr          对应硬盘的为9,U盘10
fastfat,ntfs        8 (只是FS设备,不是CDO)
------------------------------------------------
volsnap         7
ftdisk        6(HarddiskVolumex卷设备)
-------------------------------------------------
partmgr        对应硬盘的为4,U盘6  
disk         DRX对应硬盘的为3,U盘为5
ACPI         对应硬盘的为2
atapi         IdeDevicePotolo-x为1,这个应该是最底层了

那么这里从上往下排列,可以硬盘的整个设备栈过程少了一个 stack size = 5的一环。
然后又发现disk创建的设备中除了DR0代表整个硬盘外,还有一个类似DP(1)0x7e00...开头的
代表一个disk分区的设备,栈大小为5,这个应该可以作为补充的这一环。
可是很多资料都说,从ftdisk卷设备驱动往下调用的是partmgr驱动对应的设备,并没有经历DP(1)0x7e00...设备,
而且ftdisk在DeviceExtent中也只保存了partmgr和atapi对应设备的指针,那么DP(1)0x7e00...
这个设备起什么作用?ftdisk驱动HarddiskVolumex设备的下层设备到底应该是那个?
还有,为什么有些系统disk的类似DR0这样的设备会有一个RAW文件系统,而有些有系统又没有呢?
而且在设备树上可以看到RAW文件系统的MED会有很多个,基本上等于其MED设备的栈的大小个数。
因为我是初学,诸多疑问或许各位曾碰到过,望不吝赐教。


emt_2000@sina.c
驱动牛犊
驱动牛犊
  • 注册日期2008-06-05
  • 最后登录2008-09-24
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望11点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-07-08 14:05
到底有没有人知道啊?我这个问题应该没有人问过把?
emt_2000@sina.c
驱动牛犊
驱动牛犊
  • 注册日期2008-06-05
  • 最后登录2008-09-24
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望11点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-07-08 16:05
这论坛真凉快啊?怎么都没人回答问题?,自己顶,顶到问题解决为止~!
emt_2000@sina.c
驱动牛犊
驱动牛犊
  • 注册日期2008-06-05
  • 最后登录2008-09-24
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望11点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-07-09 09:16
。。。。。。。。。。。。。
游客

返回顶部