阅读:1726回复:3
请问如何通过一个文件对象FileObject得到该文件的句柄呢
因为我想在写一个文件之前截获这个写操作的Irp,先把这个被写的文件的相应内容备份起来,再把新内容写入。但由于在进行写操作时,这个文件已经被打开了,那么在驱动程序中则无法使用ZwCreateFile再次打开这个文件(返回失败为FILE_SUPERSEDED),因此无法把文件的内容读出并备份到其他地方后,再允许完成这个写操作的Irp。简单的说就是写文件之前先备份,再完成该写操作。
由于文件已经被打开而无法使用ZwCreateFile,于是我想既然已经截获了该写操作的Irp便可得到相应的FileObject,那么是否可以通过这个FileObject来得到文件的句柄,使用这个句柄便可先读出该文件相应内容并备份到其他地方后,再允许这个写操作完成。 请问大虾是否能这样做,如果不行是否有其他更好的办法呢?请指教,项目很急,谢谢各位! |
|
沙发#
发布于:2009-03-22 09:05
有了FileObject就可以直接读了,为什么还要ZwCreateFile呢?
华工计算机系的吗? |
|
|
板凳#
发布于:2009-03-23 10:36
引用第1楼looksail于2009-03-22 09:05发表的 : 我想你的意思是可以用FileObject构造自己的IRP下发到下层来实现读操作吧,我也想过这么做,但是如果能有简单的方法获得句柄我想这样更方便些,呵呵.如果句柄的路行不通,看来也只好下发自己的IRP了.除此之外你还有其他的简便方法吗?? 是的,你也是武汉的吧,我刚接触驱动,时间又紧,望高手你多多指教啊 |
|
地板#
发布于:2009-03-23 13:32
try ObOpenObjectByPointer(), though FileObject is recommended generally.
|
|