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

IoCreateFileSpecifyDeviceObjectHint创建的文件如何删除

楼主#
更多 发布于:2010-05-28 14:30
设想是拷入特定盘符下的所有非目录文件通过返回STATUS_REPARSE进行重定向,这就需要过滤IRP_MJ_CREATE时判断到底是不是目录,是目录的直接下发,不是目录则修改文件名并返回STATUS_REPARSE。判断是否目录是通过IoCreateFileSpecifyDeviceObjectHint,然后新建IRP_MJ_QUERY_INFORMATION来查询该文件INFORMATION,最后判断出是否目录。判断出是目录还好,问题是判断出不是目录,现在就需要转发,但IoCreateFileSpecifyDeviceObjectHint已经创建了一个文件,且改文件提示是被占用状态,改怎么删除呢?或者有其他不需要IoCreateFileSpecifyDeviceObjectHint的方法判断目标文件是否目录吗?
ander5115
驱动牛犊
驱动牛犊
  • 注册日期2009-12-23
  • 最后登录2012-08-17
  • 粉丝6
  • 关注3
  • 积分76分
  • 威望681点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-05-28 16:27
好像判断IRP里面的Create结构内参数Option是否包含FILE_DIRECTORY_FILE,就是目录吧,你可以跟踪一下。应该就是这个。
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,创建完成之后才能真正确定。
michaelgz
论坛版主
论坛版主
  • 注册日期2005-01-26
  • 最后登录2012-10-22
  • 粉丝1
  • 关注1
  • 积分150分
  • 威望1524点
  • 贡献值1点
  • 好评度213点
  • 原创分0分
  • 专家分2分
地板#
发布于:2010-05-28 23:56
For a new file to be created, the flag FILE_DIRECTORY_FILE is enough. For an existing file, you have to query it.
deathatfuneral
驱动牛犊
驱动牛犊
  • 注册日期2010-03-27
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望151点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2010-06-01 16:52
明白了,谢谢michaelgz
游客

返回顶部