deathatfuneral
驱动牛犊
驱动牛犊
  • 注册日期2010-03-27
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望151点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2653回复:4

IoCreateFileSpecifyDeviceObjectHint创建的文件如何删除

楼主#
更多 发布于:2010-05-28 14:30
设想是拷入特定盘符下的所有非目录文件通过返回STATUS_REPARSE进行重定向,这就需要过滤IRP_MJ_CREATE时判断到底是不是目录,是目录的直接下发,不是目录则修改文件名并返回STATUS_REPARSE。判断是否目录是通过IoCreateFileSpecifyDeviceObjectHint,然后新建IRP_MJ_QUERY_INFORMATION来查询该文件INFORMATION,最后判断出是否目录。判断出是目录还好,问题是判断出不是目录,现在就需要转发,但IoCreateFileSpecifyDeviceObjectHint已经创建了一个文件,且改文件提示是被占用状态,改怎么删除呢?或者有其他不需要IoCreateFileSpecifyDeviceObjectHint的方法判断目标文件是否目录吗?
deathatfuneral
驱动牛犊
驱动牛犊
  • 注册日期2010-03-27
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望151点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-05-28 16:53
irpsp->Parameters.Create.Options & FILE_DIRECTORY_FILE
只是这样,好像还不足以确定不是目录。所以才需要IoCreateFileSpecifyDeviceObjectHint,创建完成之后才能真正确定。
deathatfuneral
驱动牛犊
驱动牛犊
  • 注册日期2010-03-27
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望151点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2010-06-01 16:52
明白了,谢谢michaelgz
游客

返回顶部