Re: 理解驱动的设备堆栈,看DeviceTree不解,(附图)
Windows内核调试
理解驱动的设备堆栈,看DeviceTree不解,(附图)
一鱼之歌
2009-09-08, 11:12 上午
问题:
1我这个截图就是一个设备栈了吧?
2。cdfs和redbook是什么关系,
3。设备堆栈里面应该全部是attach的关系吧,对不?
4。它里面的stackszie我也不知道怎么数。。
5。为什么有\driver attach在\device上?
很想知道。。我把上面的所有设置的各个字段的值抄在纸上对应,可是还理解不了
Re: 理解驱动的设备堆栈,看DeviceTree不解,(附图)
王宇
2009-09-08, 15:24 下午
1. 没错,是设备栈。
2. Redbook.sys 是微软公司的 Digital CD Audio Playback Filter Driver,顾名可以思义。
3. 不全是。比如卷管理器 Ftdisk.sys 和 文件系统设备对象是通过 _VPB 的 DeviceObject/RealDevice 连接;和 磁盘类驱动是通过 I/O 控制码传递设备对象指针来连接的。
4. 设备对象的 Stack Size 可以参见 Device Tree 的输出信息"Stack Size" 或用 Windbg 查看 _DEVICE_OBJECT + 0x030。
5. 是指最外层的 DRV 吗?那是设备对象的“回指指针”,指向父驱动对象。
Re: 理解驱动的设备堆栈,看DeviceTree不解,(附图)
一鱼之歌
2009-09-08, 18:47 下午
谢谢王宇兄。
那个stacksize我数不对,我看书理解就是在设备栈中,它attach到第几层嘛,也就是它再住下几层就到最下层。可是我在这个栈中数得不对啊。
如这个图中
http://bbs.pediy.com/attachment.php?attachmentid=30878&stc=1&d=1252406410
partMgr的stacksize=4而DR1的stacksize=3,真晕,(可能是一对多搞乱了,不懂)
问题5。不知道你算答了我没有,因为我印象中设备栈,顾名思义那样就是所有设备连接起来,应该形如 \device\xxx上面是\device\yyyy再有的话就是\device\zzzzz
可是那里显示的是\device\cdrom0然后是\drvier\redbook (这个redbook的前面是driver)
不知道我表述清楚了没,谢谢
Re: 理解驱动的设备堆栈,看DeviceTree不解,(附图)
王宇
2009-09-08, 19:43 下午
这个链接里的东西我看不到?
http://bbs.pediy.com/attachment.php?attachmentid=30878&stc=1&d=1252406410
“指定的 附件 无效。如果您来自一个有效链接,请通知管理员。”
--------------------
Device Tree 那的显示仅仅是个名字而已 ( 它们都是 _DEVICE_OBJECT ),我还是喜欢 Windbg 的原汁原味:
0: kd> !drvobj atapi
Driver object (89de2b60) is for:
\Driver\atapi
Driver Extension List: (id , addr)
(b9f1fcd8 89dea4f8)
Device Object list:
89da8940 89db8940 89dc5030 89daa030
89db9030
0: kd> !devstack 89db8940
!DevObj
!DrvObj !DevExt ObjectName
89be33f0 \Driver\redbook 89be34a8
89be2030
\Driver\Cdrom 89be20e8 CdRom0
89be37b0 \Driver\Imapi 89be3868
89e59030 \Driver\ACPI 89dfd6a8 00000093
> 89db8940 \Driver\atapi 89db89f8 IdeDeviceP0T0L0-3
!DevNode 89e592e0 :
DeviceInst is ""
ServiceName is ""
0: kd> !devobj
89be2030
Device object (89be2030) is for:
CdRom0 \Driver\Cdrom DriverObject 89be5218
Current Irp 00000000 RefCount 2 Type 00000002 Flags 00002050
Vpb
89d6be90
DevExt 89be20e8 DevObjExt 89be2668 Dope 89ddf9c8
ExtensionFlags (0000000000)
AttachedDevice (Upper) 89be33f0 \Driver\redbook
AttachedTo (Lower) 89be37b0 \Driver\Imapi
Device queue is not busy.
0: kd> dt _VPB
89d6be90
ntdll!_VPB
+0x000 Type : 10
+0x002 Size : 88
+0x004 Flags : 1
+0x006 VolumeLabelLength : 0x18
+0x008 DeviceObject :
0x89afcda8
_DEVICE_OBJECT
+0x00c RealDevice : 0x89be2030 _DEVICE_OBJECT
+0x010 SerialNumber : 0x3b6761ae
+0x014 ReferenceCount : 3
+0x018 VolumeLabel : [32] 0x39
0: kd> !devobj
89afcda8
Device object (89afcda8) is for:
\FileSystem\Cdfs DriverObject 89a5a298
Current Irp 00000000 RefCount 0 Type 00000003 Flags 00000000
DevExt 89afce60 DevObjExt 89afcfd0
ExtensionFlags (0000000000)
AttachedDevice (Upper) 89a3e2a0 \FileSystem\Sfilter
Device queue is not busy.
0: kd> !devstack
89afcda8
!DevObj !DrvObj !DevExt ObjectName
89655c98 \Driver\SymEvent 89655d50
89a3e2a0 \FileSystem\Sfilter89a3e358
> 89afcda8 \FileSystem\Cdfs 89afce60
Re: 理解驱动的设备堆栈,看DeviceTree不解,(附图)
一鱼之歌
2009-09-08, 20:36 下午
哇,好多东西学啊。。。谢谢王宇兄
果然还是windbg看舒服点。。
上次来这里逛是半年前,你技术又牛了很多了吧。
很希望能有你指点,,,这附近我没人问。
不知道你上这论坛时间多不,或者有其它更有的方式请教你不?
Re: 理解驱动的设备堆栈,看DeviceTree不解,(附图)
sudami
2009-09-08, 20:42 下午
WY同学有QQ & MSN 的.
:)
Re: 理解驱动的设备堆栈,看DeviceTree不解,(附图)
一鱼之歌
2009-09-08, 23:08 下午
如果能实时联系向他请教那最好不过了,
我也知道会麻烦到他,不过我可以总结好问题再问
Re: 理解驱动的设备堆栈,看DeviceTree不解,(附图)
王宇
2009-09-09, 10:12 上午
Sudami 同学来了! 起立鼓掌!~
Re: 理解驱动的设备堆栈,看DeviceTree不解,(附图)
一鱼之歌
2009-09-09, 16:44 下午
好像sudami也才毕业,却那么牛了