最近在学习一个还原驱动,该还原驱动是在磁盘设备上挂载过滤对象,其间发现一个疑问,IoCallDriver到底是直接把IRP包发送给对应的目标设备对象,还是会先发给目标设备的栈顶设备,如果是发给目标设备的栈顶设备的话,那么在过滤对象里又调用IoCallDriver往下转发的时候不是...
全文
回复(6) 2008-10-11 09:23 来自版块 - 文件系统(过滤)驱动程序开发
表情
dywangj受教了,谢谢大家(2008-11-04 15:54)
nevergone学习一下(2008-10-28 12:41)
dreamsity这个问题必须看WINDOWS的源代码才可以回答。 一般对一个设备操作都存在一个HANDLE, 在内核中OS会先用ObReferenceObjectByHandle获得Ojbect指针。 然后使用IoGetRelatedDeviceObject来获得该Object关联的设备对象, ...(2008-10-21 08:37)
dywangj谢谢回复,但还是有点不明,譬如设备A,挂载了名为A1的上层过滤对象 设备B直接获得设备A的对象句柄,利用IoCallDriver,直接往设备A发的话,是不是就不会经过设备A1了?这跟是否在同一个驱动里会有关吗?(2008-10-13 11:08)
liio楼上说的是。。 CallDriver实际是就是将请求发送给你的下一层的设备对象。不一定就是卷设备对象。(2008-10-11 14:07)
mz_suya设备栈。 一般设备栈以外的驱动发送的直接调用设备栈顶层的。 设备栈内部发送的如果是发向底层的那么沿着这个设备栈从本设备往下直接发送。(2008-10-11 09:43)

返回顶部