阅读:1731回复:8
请教:文件系统过滤驱动,实现卷只读控制
请问各位大虾,如果在文件系统过滤驱动中,对挂载的某个卷进行只读控制,在irp_mj_write 对应的例程中处理就可以了吧 ?irp_mj_wirte的例程运行于 任意线程上下文吗?
|
|
|
沙发#
发布于:2009-02-01 16:48
问这个问题看来是读了一些,懂了一些,但是很不确定。你无法严格地说它运行在哪,如果非要定位你应该找是在哪个线程上下文中引起的这个IRP。然后是写IRP到达你的驱动时,该IRP的目标卷是否你所要监控的卷。既有机制是可以基本信赖的东东。。。几乎所有的根据你的要求要进行的处理的确都可以在write中做。
|
|
板凳#
发布于:2009-02-01 17:32
谢谢楼上答复~~~,我的问题是,若在irp_mj_write例程里 取进程id,然后进行过滤,是否可行,若任意线程上下文,则这种控制似乎是不可行的,我了解的是irp_mj_write 例程的irql <=2 但线程上下文可能是发起请求的线程,或是System进程中的工作者线程,那么过滤就可行,若是任意进程,那么过滤就没戏了
|
|
|
地板#
发布于:2009-02-02 09:21
可以在create的时候,把FileObject和进程id关联起来,在write的时候再根据FileObject获取进程id信息。
|
|
地下室#
发布于:2009-02-02 12:55
恩,这个方法,不错,与路径获取一样呀
![]() |
|
|
5楼#
发布于:2009-02-02 13:59
呵呵,如果这么简单我就不会烦不胜烦了。。。
|
|
6楼#
发布于:2009-02-02 18:24
引用第3楼AlexSho于2009-02-02 09:21发表的 : 但在irp_mj_wirte例程里,若是任意线程上下文,即所在的进程也不确定,比如系统线程会写这个fileobject,那被禁止了,怎么办? |
|
|
7楼#
发布于:2009-03-14 00:47
把卷弄成只读属性不成吗
|
|
|
8楼#
发布于:2009-03-14 00:49
irp中处理,有应用程序兼容性问题
|
|
|