lecy-2005
驱动牛犊
驱动牛犊
  • 注册日期2008-06-30
  • 最后登录2009-05-10
  • 粉丝0
  • 关注0
  • 积分22分
  • 威望128点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1589回复:3

请问如何通过一个文件对象FileObject得到该文件的句柄呢

楼主#
更多 发布于:2009-03-21 22:37
因为我想在写一个文件之前截获这个写操作的Irp,先把这个被写的文件的相应内容备份起来,再把新内容写入。但由于在进行写操作时,这个文件已经被打开了,那么在驱动程序中则无法使用ZwCreateFile再次打开这个文件(返回失败为FILE_SUPERSEDED),因此无法把文件的内容读出并备份到其他地方后,再允许完成这个写操作的Irp。简单的说就是写文件之前先备份,再完成该写操作。
由于文件已经被打开而无法使用ZwCreateFile,于是我想既然已经截获了该写操作的Irp便可得到相应的FileObject,那么是否可以通过这个FileObject来得到文件的句柄,使用这个句柄便可先读出该文件相应内容并备份到其他地方后,再允许这个写操作完成。
请问大虾是否能这样做,如果不行是否有其他更好的办法呢?请指教,项目很急,谢谢各位!
looksail
荣誉会员
荣誉会员
  • 注册日期2005-05-22
  • 最后登录2014-03-15
  • 粉丝2
  • 关注0
  • 积分1016分
  • 威望991点
  • 贡献值0点
  • 好评度239点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-03-22 09:05
有了FileObject就可以直接读了,为什么还要ZwCreateFile呢?

华工计算机系的吗?
提问归提问,还是只能靠自己
lecy-2005
驱动牛犊
驱动牛犊
  • 注册日期2008-06-30
  • 最后登录2009-05-10
  • 粉丝0
  • 关注0
  • 积分22分
  • 威望128点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-03-23 10:36
引用第1楼looksail于2009-03-22 09:05发表的  :
有了FileObject就可以直接读了,为什么还要ZwCreateFile呢?

华工计算机系的吗?


我想你的意思是可以用FileObject构造自己的IRP下发到下层来实现读操作吧,我也想过这么做,但是如果能有简单的方法获得句柄我想这样更方便些,呵呵.如果句柄的路行不通,看来也只好下发自己的IRP了.除此之外你还有其他的简便方法吗??

是的,你也是武汉的吧,我刚接触驱动,时间又紧,望高手你多多指教啊
michaelgz
论坛版主
论坛版主
  • 注册日期2005-01-26
  • 最后登录2012-10-22
  • 粉丝1
  • 关注1
  • 积分150分
  • 威望1524点
  • 贡献值1点
  • 好评度213点
  • 原创分0分
  • 专家分2分
地板#
发布于:2009-03-23 13:32
try ObOpenObjectByPointer(), though FileObject is recommended generally.
游客

返回顶部