carp111111
驱动牛犊
驱动牛犊
  • 注册日期2007-11-26
  • 最后登录2010-10-19
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望121点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1446回复:2

HookZwSetInformationFile中如何打开将要被删除的文件?

楼主#
更多 发布于:2009-04-10 12:57
我在程序中要实现文件防止删除,大概的流程是:
HookZwSetInformationFile()
{
       ……
       计算被删除文件的hash值;//其中用ZwCreateFile打开文件
       hash值在白名单中,拒绝删除;
    ……
}
但是,在用ZwCreateFile打开文件的时候总是返回失败。打开将要被删除的文件的代码是这样写的:
ntStatus = ZwCreateFile(&hFileHandle,
        SYNCHRONIZE|FILE_READ_DATA,
        &objAttributes,
        &IoStatus,
        NULL,
        0,
        FILE_SHARE_READ|FILE_SHARE_WRITE,
        FILE_OPEN,
        FILE_SYNCHRONOUS_IO_NONALERT|FILE_NON_DIRECTORY_FILE,
        NULL,
        0);
请高手指点这是怎么回事?
carp111111
驱动牛犊
驱动牛犊
  • 注册日期2007-11-26
  • 最后登录2010-10-19
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望121点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-04-12 18:14
回 楼主(carp111111) 的帖子
是不是因为ZwSetInformationFile系统调用发出去后,IO管理器将对该文件的操作做了相应的标识,在该操作没有完成之前,其他所有针对该文件的操作都无法进行?请高手指点。
ds_ideal
驱动牛犊
驱动牛犊
  • 注册日期2002-10-09
  • 最后登录2010-01-26
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望105点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-04-15 21:36
错误代码也不发上来?修改共享标识或直接用setinformation传入的句柄
游客

返回顶部